0

我有以下 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"));

在此先感谢您的帮助!

4

3 回答 3

3

each()循环遍历元素时应使用该方法。如果您有几个元素要应用此功能,则使用此功能:

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

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

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

无论如何,这两种方法都不会征税,但是,这种方法的税收略低一些,因为它不会遍历元素

于 2012-04-04T13:17:51.627 回答
2

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

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

演示:http: //jsfiddle.net/9w69E/

于 2012-04-04T13:22:05.310 回答
0

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

(function(){
    var $self = $('span[data-private]');
    $self.text($self.data('hidden'));
})()
于 2012-04-04T13:19:37.353 回答