jQuery множественный селектор с $(это)

есть ли способ сделать эту работу:

$(this, '#foo')

С этим я хочу выбрать" этот " элемент и #bar. Для выбора, скажем, двух идентификаторов, это так же просто, как '#foo, #bar', но когда я хочу, чтобы один из этих двух был "этим", я не могу заставить его работать.

3 ответов


проблема с вашим подходом

$(this, '#foo')

вышеуказанная строка будет искать this внутри элемента id значение foo, что не то, что вы хотите здесь.


решение

можно использовать add() для этого :

var $el = $(this).add('#foo')

теперь $el содержит $(this) & $("#foo") на котором вы можете выполнять операции.


подробнее о методах используется

add("selector")

  • Docs:http://api.jquery.com/add/
  • что он делает: добавление элементов в набор сопоставленных элементов.

проблема с подходом, который вы используете:

$(this, '#foo')

JS Fiddle demo.

заключается в том, что это контекстно-зависимый отбор, поиск this внутри #foo элемент (и идентично $('#foo').find(this)), который действителен в jQuery, хотя я бы предположил, что несколько бессмысленно (учитывая, что у вас уже есть ссылка на this (Я предполагаю, хотя если не this может быть window)).

во всех честность я не совсем уверен, почему селектор "работает" вообще, если не указано this node jQuery просто отбрасывает контекст, учитывая, что он уже "знает", где this узел и ссылка.

чтобы добавить в выборку:

$(this).add('#foo');

JS Fiddle demo.

или (наоборот):

$('#foo').add(this);

JS Fiddle демо.

ссылки:


то, что вы также можете искать, это

$('#foo', this)

он найдет foo id объекта внутри $(this)