Я хотел создать плагин jQuery, который определит, является ли элемент определенного класса ИЛИ родителем определенного класса.
Учитывая следующий HTML:
<div id="root">
<div id="a" class="myClass">
<div id="b"></div>
</div>
</div>
Я ожидал бы следующих результатов:
>$('#a').isOrParent('.myClass');
true
>$('#b').isOrParent('.myClass');
true
>$('#root').isOrParent('.myClass');
false
$.fn.isOrParent = function (selector) {
this = $(this);
if (this.is(selector))
return true;
if (this.parents(selector).length !== 0)
return true;
return false;
}
$.fn.isOrParent = function (selector) {
$this = $(this);
if ($this.is(selector))
return true;
if ($this.parents(selector).length !== 0)
return true;
return false;
}
$.fn.isOrParent = function (selector) {
if (this.is(selector))
return true;
if (this.parents(selector).length !== 0)
return true;
return false;
}
Решение A работает, однако, бросает в Chrome следующее исключение:
Uncaught ReferenceError: Invalid left-hand side in assignment
Из-за этой ошибки я попытался решить проблемы B и C безуспешно.
Это вызывает следующие вопросы:
Ханхто отметил, что решение C действительно работает. Оказывается, что исключение помогло получить ожидаемые результаты. Другими словами; 2 неправильных дела сделали право.
как отметил BlackSheep: это лучший способ сделать это:
$.fn.isOrParent = function (selector) {
return this.closest(selector).length !== 0;
}
this
специальное ключевое слово ... вы не можете присвоить ему значение