-4

イベントがトリガーされることなく、ページが読み込まれた後に追加された div に Jquery 関数をアタッチするにはどうすればよいでしょうか。

以下の例では、defaultTab-28 は後でページに追加された divです。

<a href="javascript:toggleDiv('defaultTab-28')" 

そして今、「defaultTab-28」divのようなトグル機能を使用したい

function toggleDiv(divId){
     $("#" + divId).toggle();
}

.delegate() または .on() を使用する場合、クリックなどのイベントを指定する必要がありますが、この場合イベント トリガーは必要ありません。

編集:より正確に言うと:

JQueryを使用する場合、インラインJSを使用するのは良くないことを知っています.JQueryからボタンクリック機能を使用することもできましたが、私の質問は.onまたは.delegateのような関数をイベントなしで関数に割り当てる関数はありますか?

  1. 既存のページに div を追加しました
  2. 誰かがタグをクリックすると、jquery toggle を使用する私の div である javascript 関数に渡される div が必要ですが、この div は後で追加されるため、トグル関数にバインドできません
4

2 に答える 2

1

あなたのコードはすでにそのまま機能しています。まだ存在しない div について何もする必要はありません。

http://jsfiddle.net/97GZb/

function toggleDiv(id){
    $("#" + id).toggle();
}

setTimeout(function(){
    $("body").append("<div id='defaultTab-28'>I'm the div!!!</div>");
},5000);

このhtmlで:

<a href="javascript:toggleDiv('defaultTab-28')">Click me to toggle the div that will be appended in 5 seconds.</a> ​

そしてあなたのコメントに答えるために:

JQueryを使用する場合、インラインJSを使用するのは良くないことを知っています.JQueryのボタンクリック機能を使用することもできましたが、私の質問は.onまたは.delegateのようなイベントなしで関数を割り当てる関数はありますか

いいえ、いつコードを実行するかを JavaScript エンジンに伝える何らかのイベントが必要です。ページに追加される要素はイベントであり、ミューテーション イベントと呼ばれます。これを処理できる Mutation Observer もあり、Mutation Events の代わりになることを意図していました。どちらも、クロスブラウザーのサポートが非常に優れていません。

于 2012-12-20T21:12:44.740 に答える
0

JavaScript

function toggleDiv(divObj){
     $(divObj).toggle();
}

HTML (後で追加するもの):

<div onClick='toggleDiv(this);'></div>
于 2012-12-20T21:02:17.497 に答える