有没有更好的方法来编写这个jQuery?

时间:2012-04-04 13:16:10

标签: jquery

我有以下jQuery行,但使用.each()似乎有些过分。

$('span[data-private]').each(function () { 
    $(this).text($(this).attr("data-hidden")); 
});

有没有更好的方法来编写看起来像这样的jQuery:

// This doesn't work as $(this) refers to document not the current selector
// but it gives the idea of what I'm looking for.  I want to reference the current
// selector
$('span[data-private]').text($(this).attr("data-hidden"));

提前感谢您的帮助!

3 个答案:

答案 0 :(得分:3)

循环遍历元素时,应使用each()方法。如果你有几个元素要应用这个函数,那么使用它:

$('span[data-private]').each(function () { 
    $(this).text($(this).attr("data-hidden")); 
});

或者,如果您只将此函数应用于一个元素,那么只需使用text()方法上的回调,如下所示:

$('span[data-private]').text(function () { 
    return $(this).attr("data-hidden"); 
});

无论如何这两种方法都没有收费,但是,这种方法稍微不那么费力,因为它不会循环元素

答案 1 :(得分:2)

.text可以传递一个回调函数。

$('span[data-private]').text(function(){
    return $(this).attr("data-hidden");
});

DEMO:http://jsfiddle.net/9w69E/

答案 2 :(得分:0)

嗯,也许可以尝试这样的事情:

(function(){
    var $self = $('span[data-private]');
    $self.text($self.data('hidden'));
})()