【问题标题】:How to wrap divs around each letter in a user given string如何将 div 包裹在用户给定字符串中的每个字母周围
【发布时间】:2014-05-09 10:18:09
【问题描述】:

我正在尝试制作一个小型网络应用程序,并希望让用户输入文本 - 该应用程序将简单地解析每个字母,为输入的每个字符(包括空格)创建一个小 div。

代码运行正常,但我似乎无法分隔输出中的每个字母。目前我只能在整个字符串周围包裹一个新的 div。

#userString 是一个文本框,当用户键入时,#stringPush 中的输出应该与输入相同,但每个字母周围都有一个 div 和 span(.letter ui-draggalble span #sort)。

我确信我使用“for”来查找每个字母是问题所在。非常感谢任何想法或建议。谢谢!

$('#userString').keyup(function() 
{
    var txt = $('input:text[id=userString]').val();
    for( var x = 0, c=''; c = txt.charAt(x); x++)
    { 
        $('#stringPush').html(txt).wrapInner("<div class='letter ui-draggable'><span id='sort'></span></div>");
    }
});

http://jsfiddle.net/S7FJ8/5/ 这是完整的代码.. 叹息。应该不会那么难。

【问题讨论】:

    标签: javascript jquery user-input keyup digit


    【解决方案1】:

    试试这个:

    $('#userString').keyup(function() {
        var txt = $.trim(this.value).split('');
        $('#stringPush').html(function() {
            return $.map(txt, function(letter) {
                return "<div class='letter ui-draggable'><span class='sort'>"+letter+"</span></div>"
            });
        });
    });
    

    请注意,ID 必须是唯一的,我已将 id 属性更改为类名。

    http://jsfiddle.net/7ZRZS/

    【讨论】:

    • 是的!感谢捆绑!!尽管空间非常重要,但我还有另一个问题。可以使用此代码为空间创建相同的 div/span 组合吗?是的,我以前也从未见过 .map。
    • @JellyAce 遍历数组,根据回调的返回值返回一个新数组。
    • 我不认为我明白你的意思。哈哈。我只是测试一下它的作用。谢谢!
    • 不知何故,这些 div 不可用于 jquery-ui 拖动。他们只能包含在他们的 div 中吗?尽管页面上的其他内容运行良好,但它们似乎都不可用。我已经更新了 jsfiddle 以包含两者。干杯!
    • @user3594223 欢迎您,因为 JellyAce 提到您可以删除 $.trim 电话。 var txt = (this.value).split('');
    猜你喜欢
    • 2015-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-20
    • 2015-06-13
    • 2018-09-08
    • 1970-01-01
    相关资源
    最近更新 更多