2013-09-16 2 views
10

Простой вопрос:JQuery ссылка селектор себя

Как относиться к себе без использования $.each(), например, когда я хочу установить html() владеть атрибут?

$('*[rel]').html($(this).attr('rel')); // nope 
$('*[rel]').html($(self).attr('rel')); // nah 
$('*[rel]').html($(sender).attr('rel')); // undefined 
$('*[rel]').html($(target).attr('rel')); // still undefined 
$('*[rel]').html($(???).attr('rel')); // this isn't even correct syntax 
$('*[rel]').html($(beer).attr('rel')); // well that would be tasty 
$('*[rel]').html($(woman).attr('rel')); // not in this life 
$('*[rel]').html($(god help me!).attr('rel')); // He probably doesn't even know how to use a computer 
$('*[rel]').html($(i give up).attr('rel')); // unexpected... o'rly? 
+4

_He, вероятно, даже не знает, как использовать компьютер_ :) – undefined

+1

Голосовать за вопрос сам, хотя бы для юмора в нем ... :) – TheCuBeMan

ответ

12

You can pass a function instead of a a string.

$('[rel]').html(function() { 
    return $(this).attr('rel'); 
}); 

Причина, почему все ваши примеры не работают потому, что в каждом случае ваш код выполняется задолго до того, селектор был оценен. Это то, что вам действительно нужно понять - это еще более актуально, когда задействованы обратные вызовы, например. для AJAX или таймеров: когда вы помещаете код где-то, он выполняется на этом этапе. Таким образом, foo(some code here) будет всегда выполнить код, который является частью аргумента функции, независимо от того, что делает foo. Единственная причина избежать этого - передать функцию, содержащую этот код - это выражение функции оценивается (которое оценивается вызываемой функцией). Тогда фактическая функция (которая, очевидно, должна ожидать вызываемого вместо простого значения) может вызывать переданную функцию всякий раз, когда это уместно.

+0

Хорошо. Я понимаю, что js основан на обратных вызовах, но был уверен, что давно, на далекой далеке, там была красивая молодая девушка ... да, и у нее был компьютер, на котором на старой, старой версии j, j, jQuery 'sender' или' self'. Но я могу ошибаться в отношении девушки, когда я был молод, каждая девушка была красива. –

+0

Да, я думаю, что девушка заставила вас думать о странных вещах - технически невозможно то, что вы предложили, когда-либо работали таким образом. – ThiefMaster

Смежные вопросы