为什么在jquery中使用return如果代码在没有它的情况下工作得很好?

时间:2012-03-15 23:20:41

标签: jquery function return

我是一个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>

2 个答案:

答案 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之间添加东西,它仍然有效。