У меня возникает небольшая путаница в отношении того, как точно работают селекторы в Javascript/jQuery. У меня есть два метода, называемые почти одинаковыми способами, которые, кажется, возвращают разные селекторы, и я не могу сказать, почему.Разница между методами доступа к узлу в Javascript/jQuery
if (document.URL.indexOf("search?s=") !== -1){
updateOldSearch();
} else {
$("li a:contains('Search')").bind("click", replaceWithSearch);
}
Все отлично работает в другое заявление здесь:
function replaceWithSearch(){
this.parentNode.replaceChild(searchWrapper, this); //Works fine
}
Но когда я к нему доступ в то, что мне кажется, чтобы быть идентичным образом (ясно, что это на самом деле не идентичны) она нарушает
function updateOldSearch(){
var courseTab = $("li a:contains('Search')");
courseTab.parentNode.replaceChild(newBox, courseTab); //parentNode is undefined
}
Любые объяснения относительно того, что происходит за кулисами здесь? Есть ли автоматическое кастинг, который jQuery делает, что я злоупотребляю?
'$()' возвращает объект JQuery, а не DOM Node. Две очень разные вещи. объект jQuery не имеет всех тех же методов, что и узел DOM. –
@KevinB - объекты jQuery, автоматически передаваемые в узлы DOM, когда они передаются в обратный вызов? –
Это зависит от обратного вызова, но обычно да. –