現在、私のページのスクリプトには、その要素の1つが追加されており、テキスト、div、イメージなどの異なる要素をクリックしています。文書の追加された要素のクリック検出
jQuery hideメソッドを使用すると、すべてが非表示になり、1つの入力のみが表示されます。毎回正しい場合は残りの部分が表示され、新しい要素を追加できます。私のhtmlでdocumentIは、次のようになります方法を使用しています:
$(document).ready(function() {
hideUnused();
$('#file_upload').uploadify({
//all stuff from uploadify <- not important now
})
document.onclick = function (evt) {
ClickDocument(evt); //<- important now
};})
そして、それは最初にページ上にあるすべてのための素晴らしい作品が、私は新しい要素を追加していたときに、それは彼らのように見えます(単に子方法を追加) ClickDocumentメソッドが見るDOMツリーの外にあります。
そして、それはClickDocument方法である:
function ClickDocument(e){
e = e || event;
var target = e.target || e.srcElement;
alert(target.nodeName);
return;
}
それだけでそれをテストするためにめちゃめちゃ簡単です。 誰も私がそれで何ができるか考えている人はいますか?
私は1つのことを言い忘れました - 私はライブイベントをテストしていましたhttp://api.jquery.com/live/しかし、それは私の期待に合わないものです。 show/hideメソッドでは機能しません。
ご協力いただきありがとうございます。
編集:私は、私は2つの異なる方法で.delegate()
方法を使用しました推薦してきたよう
。両方とも、古いHTMLコードを $(document).ready(function()
から $("body").delegate(".kElement","click", function(evt){
に変更しました。これは、クリック時に追加のアクションが必要なクラスエレメントがkElementです。 だから、最初のものはそのようになっています
$("body").delegate(".kElement","click", function(evt){
e = evt || event;
var target = e.target || e.srcElement;
alert(target.nodeName);
})
と第二はそのようになっています
$("body").delegate(".kElement","click", function(evt){
ClickDocument(evt);
})
だから私は私のオブジェクトをクリックしたときに警告を表示する必要がありますが、それはしません。私は間違って何をしていますか?
あなたの編集については、 '
' '要素 –がまだ' .ready() '関数の前に呼び出されている場合は、依然として' '.ready()' '関数で委譲コードをラッピングする必要があります。 – sebap123