jQuery не может найти элемент класса из некоторого html, возвращаемого через вызов ajax

Я запускаю вызов ajax, который возвращает некоторый HTML в виде строки. Для целей этого вопроса я назову это <div class='abc'>ABC123</div>, когда получу это обратно. Я хочу проверить и посмотреть, имеет ли класс «abc» значение и каково это значение. Однако, когда я запускаю .find(), я не могу найти класс, я могу найти div, но не конкретный класс. Простого использования div недостаточно, потому что в реальном живом коде HTML очень сложен и имеет много div и классов. Ниже приведен код JS, иллюстрирующий мою точку зрения.

var x = "<div class='abc'></div>"; 
$(x).hasClass("abc"); // returns true
$(x).find(".abc"); // Returns empty array

Почему первая строка возвращает true, но селектор не может найти элемент?

Спасибо!


person rknudson    schedule 11.02.2015    source источник


Ответы (2)


Потому что $x — это div с классом abc.

jquery .find() пытается найти любых дочерних элементов в div.abc с классом abc, которых он не найдет.

Это больше похоже на него.

var x = "<div class='abc'><div class='def'></div></div>"; 
$(x).hasClass("abc"); // returns true
$(x).find(".def"); // returns $('div.def')
person Venkata Krishna    schedule 11.02.2015
comment
Кажется, это проблема. Спасибо! - person rknudson; 11.02.2015
comment
@rknudson - рад помочь. - person Venkata Krishna; 11.02.2015

Когда мы добавляем элемент html на страницу, иногда JQuery не может найти этот элемент из-за родительской и дочерней связи.

Например: кнопка с классом submit внутри div с идентификатором append_area, и мы хотим запустить функцию при нажатии на эту кнопку. Затем мы можем использовать приведенный ниже код.

HTML-код:

<div id="append_area">
</div>

Jquery-код:

$("#results").delegate('.submit', 'click', function(){ });
person Santosh Devnath    schedule 30.05.2017