Я хотел бы получить # непосредственных детей, которых имеет элемент, и затем получите класс ребенка в конкретном индексе. Что-то как:
var index = 25;
var children = $("#myListElement").children();
if (index < children.length) {
if (children[index].hasClass("testClass")) {
alert("hi!");
}
}
Я думаю, что синтаксис для .children () в порядке, но как я вытаскиваю индексируемый элемент из них в стиле jQuery?
Спасибо
Метод children
возвращает объект , подобный массиву , который содержит простые узлы DOM. Вам нужно обернуть содержащийся элемент с помощью jQuery или получить его с помощью метода eq (index)
, чтобы иметь возможность использовать для него методы jQuery, такие как hasClass
.
if ($(children[index]).hasClass("testClass"))
jQuery не оборачивает их по умолчанию по очевидным причинам производительности.
Если вы используете Firebug или инструменты разработчика Chrome / Webkit, вы получите исключение при попытке вызвать неопределенный метод для объекта. См. , пример . Убедитесь, что вы смотрите вывод на консоль:)
TypeError: Object #<an HTMLLIElement> has no method 'hasClass'
Прошу прощения, но я нашел ваш вопрос несколько запутанным. Это то, что вы хотите?
var parent = $("#myitem"),
count = parent.children().length,
index = parent.children(".theClass").index();
Это получает дочерний индекс элемента с определенным классом, цикл не требуется.
Однако, если вам нужен класс (но уже есть индекс), сделайте следующее:
var parent = $("#myitem"),
count = parent.children().length,
classN = parent.children()[3].className;
используйте eq ()
:
if (children.eq(index).hasClass("testClass"))