#javascript #jquery #events #click #jquery-events
#javascript #jquery #Мероприятия #нажмите #jquery-события
Вопрос:
У меня есть следующий код:
var hitarea = $("#c_" $.fragment().category).parent().siblings('div.hitarea');
var arr = new Array();
arr.push(hitarea);
do{
hitarea = $(hitarea.parent().parent().siblings('div.hitarea'));
arr.splice(0,0,hitarea);
}while(hitarea.length > 0);
for(var i=0; i < arr.length; i ){
var element = $(arr[i]);
if(arr[i].length != 0){
element.trigger('click');
}
}
Но это работает только для первого элемента, и событие щелчка следующих элементов не запускается.
Справка.
Комментарии:
1. Что происходит при щелчке по первому элементу? Произошла ли перезагрузка страницы или изменение контекста?
2. Я внедряю плагин jquery treeview bassistance.de/jquery-plugins/jquery-plugin-treeview и если пользователь указывает конкретный идентификатор узла, то я должен открыть дерево до этого узла
3. Рохит, было бы здорово, если бы ты решил этот вопрос, чтобы он не всплывал постоянно. если вы отказались от него, удалите его.
Ответ №1:
Попробуйте это:
arr=[...]//array of elements
for(var i=0; i < arr.length; i ){
var element = $(arr[i]);
if(element.length){
element.trigger('click');
}
}
Примечания:
- Вы забыли закрыть внешний цикл for
- Нет необходимости проверять, является ли
!= 0
— 0 одним из «ложных» значений JavaScript, поэтому простое указание имени переменной проверит, не равно ли оно нулю, not null, not undefined и т.д. - Если
arr
это уже массив объектов jQuery, то нет необходимости снова оборачивать его в объект jQuery (т. Е. не делать$(arr[i])
). Однако, если это обычный элемент DOM или подмассив, то мой приведенный выше код будет работать.
Комментарии:
1. Вам даже не нужна
if (element.length)
проверка — jQuery с радостью ничего не сделает, если набор селекторов пуст. Например,$('#idthatdoesntexist').click()
просто ничего не делает.
Ответ №2:
if(arr[i].length != 0){
Это { опечатка? Если нет, то это объясняет проблему.