Это может показаться странным, но я работаю над плагином, который должен находить элементы внутри div или сам div.
Сценарий находит элемент на основе выбора пользователя, но содержимое, включая разметку, является переменным. Поэтому скрипт будет искать элемент следующим образом:
$('.block').find(selector); // selector set by user
но нет простого способа заставить селектор выбрать «.block». Выбор родительского перед использованием find не является решением, так как есть несколько элементов .block.
Я знаю, что расширение селектора expr[":"]
не будет работать, так как оно ищет только детей. Но я нашел способ " утиный удар " этим методом, сделав селектор ': self':
(function($){
var orig = $.fn.find;
$.fn.find = function(sel){
return (sel === ':self') ? this : orig.call(this,sel);
}
})(jQuery)
Но это кажется немного чрезмерным. И это замедлит обработку jQuery чуть-чуть с каждой функцией поиска. Есть ли другой способ сделать это?
Спасибо за ответы! Но в итоге я сделал это:
var b = $('.block'),
el = (b.is(selector)) ? b : b.find(selector);