通过引用修改每个函数的jquery

时间:2013-11-21 21:05:45

标签: jquery

这实际上不应该太难,但我不能让它发挥作用。所以这是我想要实现的简化版本。是的,我确实需要每个构造。

var test = "<div><ul><li>liste 1</li><li>liste 1</li></ul></div>";

$("li", test).each(function() {
   $(this).addClass("test")
})
console.log(test);

结果:

<div><ul><li>liste 1</li><li>liste 1</li></ul></div>

Anticipated结果:

<div><ul><li class="test">liste 1</li><li class="test">liste 1</li></ul></div>

任何想法??

4 个答案:

答案 0 :(得分:1)

你不能在字符串上使用context方法,只能在集合上使用find()

$(test).find("li").addClass("test");

如果你没有真正使用元素,而是字符串,你仍然可以做类似的事情:

$(test).find("li").addClass("test").end().get(0).outerHTML;

并获取更改后的字符串

FIDDLE

答案 1 :(得分:1)

test正在修改,但未更新。您可以使用以下内容进行更新:

var test = "<div><ul><li>liste 1</li><li>liste 1</li></ul></div>";
$("li", test).each(function() {
   $(this).addClass("test");
   test = $("<div />").append($(this).parent().parent()).html();
})
console.log(test);

答案 2 :(得分:1)

您必须从字符串创建一个jQuery包装集,对其进行操作,并使用它来输出结果:var $test = $(test);console.log($test.html())。但请参阅上面的KevinB的评论:html()调用不保证返回添加了类的字符串。

http://jsfiddle.net/HUxC4/1/

答案 3 :(得分:1)

我要回答的问题:

var test = $("<div><ul><li>liste 1</li><li>liste 2</li></ul></div>");

$(test).find("li").each(function() {
    $(this).addClass("test")
})

test = test.html()