使用jquery.each()

时间:2015-10-27 15:18:58

标签: jquery replace closures each nested-loops

我目前正在尝试创建嵌套循环,以便将可点击的定义应用于几个文本块中的单词。第一个外部循环遍历每个类中的定义名称和ID&n;概念&#39;并创建一个由内循环使用的新<span>。然后内循环遍历原始文本的每个块。并替换&#39; nounName&#39;的每个实例。使用在第一个循环中创建的<span>模板。这是代码......

$(document).ready(function(){   
    $('.n-concept').each(function(){        
        var nounName = $(this).find('h3').html();
        var nounID = $(this).attr('id');
        var newString = '<span data-vocabID="'+nounID+'" class="noun-name">'+nounName+'</span>';

        $('.original-text').each(function(){
            var newText = $(this).text().replace(RegExp(nounName, 'gi'), newString);
            $(this).html(newText);                  
        });
    });
});

目前,循环正在运行,但只有“&n”概念的最后一次迭代的值才有效。正在应用循环,即,它不保留原始文本的改变值。我对javascript和jquery有点新意,请原谅我,如果这是一个非常简单的问题需要解决。从阅读起,似乎关闭是我在这里可能需要的?任何帮助将不胜感激:)

1 个答案:

答案 0 :(得分:0)

您应该使用Pair<MyObject, RefData>方法而不是html(),因为text()方法会忽略您在上一次迭代中添加的范围。

http://jsfiddle.net/erztfr5s/