$ (этот + "селектор" )? $( "img", это) возможно?
Я пытаюсь "выбрать" img внутри селектора $(this). Я знаю, что могу найти его, используя .find('img')
, но это возможно:
$("img",this)
?
Какой самый оптимальный способ сделать это?
Первоначальный код
<a class="picture" href="test.html">
<img src="picture.jpg" alt="awesome">
</a>
Ответы
Ответ 1
Какой самый оптимальный способ сделать это?
Оба $(this).find('img')
и $('img', this)
эквивалентны.
Из документов:
Внутри контекст селектора реализуется с помощью метода .find() поэтому $('span', this) эквивалентно $(this).find('span').
http://api.jquery.com/jQuery/
Ответ 2
Это идеальный разумный способ сделать это.
Итак, вы бы хотели:
$('a').click( function() {
//if the element dosent change you can use this
//var src = $('img', this).attr('src');
//else use $(this)
var src = $('img', $(this)).attr('src');
alert(src);
return false;
});
Смотрите: http://jsfiddle.net/xYmwV/
В действительности нет никакой разницы, поскольку в обоих методах вы загружаете элемент dom и выполняете поиск. Ваш путь "чище" и проще, но может быть более запутанным:)
Более быстрый способ был бы $(this).children()
, так как тогда он не должен был искать элементы, но в DOM попадает прямо вниз. Но он принимает гибкость script.
Ответ 3
Да, вы можете это сделать... в любом случае они эквивалентны, так что это всего лишь вопрос ваших "синтаксических вкусов":
Внутри контекст селектора реализуется с помощью метода .find() поэтому $('span', this) эквивалентно $(this).find('span').
http://api.jquery.com/jQuery/
Ответ 4
Это не имеет значения, выбирайте то, что вы предпочитаете, это прежде всего стилистический выбор.
jQuery обрабатывает форму $(selector, context)
, выполняя $(context).find(selector)
или (если context
уже является экземпляром jQuery) context.find(selector)
под обложками, поэтому теоретически форма find
немного более эффективный, но никак не имеющий значения.
Ответ 5
Почему вы не можете использовать .find('img')
? он работает со мной: http://jsfiddle.net/nnmEY/
Ответ 6
Я пытаюсь "выбрать" img внутри селектора $(this).
var myImg = $(this).find("img");