Известный идентификатор
$(".container > #first");
или
$(".container").children("#first");
или поскольку идентификаторы должны быть уникальными в пределах одного документа:
$("#first");
Последнийконечно же, самый быстрый.
Неизвестный идентификатор
Поскольку вы говорите, что не знаете их идентификатора, верхняя пара верхних селекторов (где написано #first
), можно изменить на:
$(".container > div");
$(".container").children("div");
Последний (из первых трех селекторов), который использует только идентификатор, конечно, не может быть изменен таким образом.
Если вы такженеобходимо отфильтровать только те дочерние DIV
элементы, которые определяют атрибут ID, который вы бы записали в селекторы следующим образом:
$(".container > div[id]");
$(".container").children("div[id]");
Присоединить обработчик кликов
Добавьте следующий код, чтобы прикрепить обработчик кликовна любой из ваших предпочтительных селекторов:
// use selector of your choice and call 'click' on it
$(".container > div").click(function(){
// if you need element's ID
var divID = this.id;
cache your element if you intend to use it multiple times
var clickedDiv = $(this);
// add CSS class to it
clickedDiv.addClass("add-some-class");
// do other stuff that needs to be done
});
Спецификация селекторов CSS3
Я также хотел бы указать на Спецификацию селекторов CSS3 , которую использует jQuery.Это очень поможет вам в будущем, потому что могут быть некоторые селекторы, о которых вы вообще не знаете и которые могут значительно облегчить вашу жизнь.
После вашего отредактированного вопроса
I'mне совсем уверен, что я знаю, что вы ищете, даже если вы написали какой-то псевдокод ... Во всяком случае.На некоторые части все еще можно ответить:
$(".container > div[id]").each(function(){
var context = $(this);
// get menu parent element: Sub: Show Grid
// maybe I'm not appending to the correct element here but you should know
context.appendTo(context.parent().parent());
context.text("Show #" + this.id);
context.attr("href", "");
context.click(function(evt){
evt.preventDefault();
$(this).toggleClass("showgrid");
})
});
последние тебе context
использования могут быть объединены в одну цепочку:
context.text(...).attr(...).click(...);
Относительно элементов DOM
Вы всегда можете получить лежащий в основе элемент DOM из набора результатов jQuery.
$(...).get(0)
// or
$(...)[0]
даст вам первый элемент DOM из набора результатов jQuery.Результатом jQuery всегда является набор элементов, даже если в них нет ни одного, или только один.
Но когда я использовал функцию .each()
и предоставил анонимную функцию, которая будет вызываться для каждого элемента в наборе, this
Ключевое слово на самом деле относится к элементу DOM.
$(...).each(function(){
var DOMelement = this;
var jQueryElement = $(this);
...
});
Надеюсь, это прояснит некоторые вещи для вас.