Я пытаюсь создать некоторые базовые функции опрокидывания кнопок с помощью JQuery и toggleClass. Я создаю список элементов, клонируя DIV из своего HTML и повторяя его несколько раз (заполняя список данных из базы данных). Для этого я использую цикл for. Вот действующий код.JQuery Слушатели событий в Loop
var displayNode = document.getElementById('phoneDisplayContainer');
for(var i=0; i<length; i++) {
//Clone the original container display.
var clonedDisplay = displayNode.cloneNode(true);
clonedDisplay.setAttribute('id', 'phoneDisplayContainer' + i);
//Remove hidden class from cloned Element. NOT CROSS BROWSER!
clonedDisplay.classList.remove('hidden');
var children = clonedDisplay.getElementsByTagName('div');
//Fill new nodes children containers with data.
children[1].innerHTML = contact.phone[i].type;
children[2].innerHTML = contact.phone[i].number;
children[3].setAttribute('onclick', 'PhoneUtility.edit(' + i + ');');
children[3].setAttribute('id', 'phoneEditDisplay' + i);
children[4].setAttribute('onclick', 'PhoneUtility.remove(' + i + ');');
//Hidden elements
var hidden = new Array(children[3], children[4]);
//Set rollover events.
clonedDisplay.setAttribute('onmouseover', '$("#' + children[3].id + '").toggleClass("hidden");');
clonedDisplay.setAttribute('onmouseout', '$("#' + children[3].id + '").toggleClass("hidden");');
//Append the new node to the display container
phoneContainer.appendChild(clonedDisplay);
}
}
Есть ли способ использовать обработчик событий Jquery вместо того, чтобы установить OnMouseOver и onmouseout непосредственно на элементе?
Я попытался это:
$(clonedDisplay).mouseover(function() {
$(children[3]).toggleClass('hidden');
});
не повезло. Он просто отображает эффект опрокидывания последнего элемента в списке. Это на самом деле моя первая попытка использования jQuery, поэтому любые другие предложения о том, как я мог бы использовать jQuery внутри кода, тоже были бы полезны.
EDIT: Я также хотел бы переключить несколько детей из arraylist, упомянутых в цикле for. Как бы я это сделал? Я не могу передать массив команде jquery без ошибок.
Не могли бы вы опубликовать это на http://jsfiddle.net * с помощью * html, с которым вы манипулируете? Я могу взглянуть на ваш рабочий пример и показать вам, как превратить его в какой-то короткий jQuery, если хотите. – JesseBuesking
Я с JesseB - большинство из нас, кто знает jQuery, знают, что вы можете делать то, что хотите делать с утилитой привязки '.on()', но информации для получения реального ответа недостаточно. Я написал один, который использовал кучу предположений и догадок, а затем сказал: «Мех, лучше знать реальный сценарий». Достаточно сказать: '.on()' (для jQuery 1.7+) - это то, что вы ищете. –