我是一个jQuery新手。以下是将h1元素移动到第一段下方的两个代码片段。他们完全一样。
$('p').eq(0).after(function() {
return $(this).prev();
});
和
$('p').eq(0).after( $('h1') );
哪种代码练习更可取?为什么呢?
提前感谢您的帮助。
编辑:
这是html。
<article>
<h1>Post</h1>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua.
</p>
<p>
<span class=co>Lorem ipsum dolor sit amet</span>, consectetur adipisicing elit, sed do eiusmod
</p>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua.
</p>
</article>
答案 0 :(得分:1)
第一个代码:选择所有p
元素,获取第一个找到的元素并在其后面添加一个返回的元素。回调上的this
指向所选的p
。因此console.log
会返回p
元素。 return
会在选定的p
之前返回元素。在这种情况下,选定的p
是第一个Lorem ipsum
。前一个元素是h1
。然后返回h1
并附加after()
p
元素。
第二个代码:将会起作用。但要小心!在这种情况下,您将获得所有p
元素并对其进行过滤,获取第一个元素(如第一个代码),这样您就可以将after
所有找到的h1
元素附加到h1
。在您的示例HTML代码中,您只有一个{{1}}元素,这不会是一个问题。但如果你有两个或更多,你将遇到麻烦!
答案 1 :(得分:0)
我会选择第二种选择,因为它更聪明,更短,看起来更好。
在..
$('p').eq(0).after(function() {
return $(this).prev();
});
..意味着现有html的结构必须保持原样。如果你是第二种方式,你可以在第一段和h1
之间添加东西,它仍然有效。