-1

コードを書きます。私の要素は現在存在しません。コードは

jQuery('a.feedSearchClear').on('click',function(evt){
  console.log('coming here');
  var intId = window.setInterval(function(){
   if(jQuery('#feedSortDropDownElement').parent().find('ul').find('a').length > 0) 
{     window.clearInterval(intId);
      jQuery(".feedSortMenuContainer").prepend(menu_html);
     reRenderMenu();

}
},1000);

});

表示されたときにそのボタンをクリックすると。コンソールログが表示されていないということは、メソッドが呼び出されていないことを意味します。誰でも理由を説明できますか??

4

2 に答える 2

1

何が起こっているかというと、選択した要素にバインディングを直接適用しているということです:

$("a.example").on("click", do_stuff);

上記では、「jQuery、aクラスが のページ上のすべてのタグを見つけて、このバインディングexampleを適用する」と言っています。clickあなたの場合の問題は、ページに要素がまだないことです。

これを修正するには、祖先ノード(階層の上位にある任意のノード) にバインディングを配置し、イベントを処理できるようにします。最も簡単な方法はbody、次のようにタグを使用することです。

$("body").on("click", "a.example", do_stuff);

さて、あなたは「jQuery、 タグ内で のクラスのタグがクリックされるたびに、これを実行してください」と言っaexampleます。body

その時点で子ノードが存在しない場合でも、基本的には body タグに子ノードに代わってイベントをリッスンするように指示しています。

于 2013-09-11T16:34:13.163 に答える