JqueryとtoggleClassを使用して、いくつかの基本的なボタンロールオーバー機能を作成しようとしています。私は自分のHTMLからDIVを複製し、それを複数回複製することによって要素のリストを構築しています(データベースからデータのリストを取り込む)。これを行うには、forループを使用しています。ここに現行のコードがあります。Forループ内のJQueryイベントリスナー
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);
}
}
onmouseover属性を設定するのでjQueryのイベントリスナーを代わりに使用する方法はありますし、ONMOUSEOUT直接要素の?運で
$(clonedDisplay).mouseover(function() {
$(children[3]).toggleClass('hidden');
});
:
は、私はこれを試してみました。表示するだけで、リストの最後の要素にロールオーバーエフェクトが実行されます。これは実際にjQueryを使用した最初の試みです。コード内でjQueryを使用する方法についての他の提案も参考になります。EDIT:forループで言及されたarraylistから複数の子供を切り替えることもしたいと思います。どのように私はこれを設定するのですか?私はエラーを取得せずに配列をjqueryコマンドに渡すことができません。
http://jsfiddle.net *上でこれを投稿できますか?*あなたは操作しているHTMLを使用していますか?私はあなたの作業例を見て、あなたが望むならそれを簡単なjQueryに変える方法を示します。 – JesseBuesking
私はJesseBと一緒にいます - jQueryが '.on()'イベントバインディングユーティリティで何をしたいのか分かりますが、実際の答えを得るには十分な情報がありません。私はたくさんの仮定と推測を使用して、「実際のシナリオを知るためにはもっと良い」と言った。 '.on()'(jQuery 1.7+用)は、あなたが探しているものです。 –