2013-04-26 100 views
1

我有一个简单的UL与所有LI的class =“event”。appendTo不按预期工作

下面的jQuery没有按预期工作。

$('#calendar-feed li.event').each(function() { 
    $(this).find('h3').appendTo('h4'); 
}); 

我想在每一个LI中采用唯一的h3并将它追加到该LI中唯一的h4。

目前它将所有H3和克隆到每个H4。

我的语法错了吗?或者我在想这个错误的方法?

回答

3

这样做,因为appendTo是一个新的选择器,它可以包含页面内的任何内容。所以你选择了页面中的所有H4并将它们添加到LI h3。

$('#calendar-feed li.event').each(function() { 
    $(this).find('h3').appendTo($(this).find('h4')); 
}); 
+0

这个工作。我有一个jQuery的体面的工作知识,但我没有一个程序员的头脑......无论出于什么原因,我在想,因为它是在一个.each函数中,它只会在特定的LI中查找。 感谢您的帮助。 – Sean 2013-04-29 00:03:22

2

我认为你需要得到正确的h4内循环,这样的事情:

$('#calendar-feed li.event').each(function() { 
    var h4 = $(this).find('h4'); 
    $(this).find('h3').appendTo(h4); 
}); 

Here is a working example

+0

我没有尝试这个特定的解决方案,但我想它也可以工作,现在看到我做错了什么。 – Sean 2013-04-29 00:04:17

0

这是没有意义的附加<h3>INTO<h4>

我猜你想要的是把<h3><h4>,交换它们的位置(尽管它仍然意义不大,如果你使用这些标签,但无论如何)

$('#calendar-feed li.event h3').each(function (i, h3) { 
    var $h3 = $(h3); 
    $h3.after($h3.closest('li').find('h4')); 
}); 

或者如果您希望<h3>保证为每个<li>中的最后元素,则请执行此操作

$('#calendar-feed li.event h3').each(function (i, h3) { 
    var $h3 = $(h3); 
    $h3.appendTo($h3.closest('li')); 
}); 

DEMOhttp://jsfiddle.net/terryyounghk/sN7Mf/

+0

我确实希望h3内部的h4。主要是因为我需要如何设计它,而且我不能重写CMS如何写出标记。 – Sean 2013-04-28 23:55:32