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")); 
});

または、この関数を 1 つの要素にのみ適用する場合は、次のtext()ようにメソッドでコールバックを使用します。

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

いずれにせよ、2 つの方法はいずれも負担がかかりませんが、この方法は要素をループしないため、負担がわずかに少なくなります。

于 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 に答える