5

WordPress テーマ TwentyTwelve を使用していますが、ajax リクエストを介してページをロードしているようです。ページ上の別の要素を表示および非表示にするボタン (#header-navigation-link) があります。最初のページの読み込みでは ajax 呼び出しなしで機能しますが、別のページに移動すると ajax が読み込まれ、プログラムが #nav-mobile-wrapper を見つけられなくなります。

        $(document).on('click', "#header-navigation-link", function () {

        $(document).find("#nav-mobile-wrapper").fadeToggle();
        alert( 'Success!' );
    });

ajax がロードされたすべてのページでアラートが常にポップアップするため、表示および非表示にする要素ではなく、ボタンを見つけます。また、#nav-mobile-wrapper をクリックして #header-navigation-link を切り替えるように 2 つを入れ替えてみましたが、その逆でも同じことが起こります。

この関数で #nav-mobile-wrapper をターゲットにするには何が欠けていますか?

助けてくれる人に感謝します!

4

3 に答える 3

2

この要素(「#nav-mobile-wrapper」)もajaxによって生成されますか? その場合は、クリック機能とこの要素が生成される場所が同じ「スコープ」にあることを確認してください。例えば:

$( document ).ready(function() {
      $.ajax({
       // this is where you send the ajax request to server
      }).done(function(response){
       //because you said, it loaded page via ajax request, so page's loading and #nav-mobile-wrapper's generating probably happened here
       // If so, try put your click function here, inside the 'done' block!
       $(document).on('click', "#header-navigation-link", function(){
       // your stuff
     });
   })

関数が機能しないのは、単純に #nav-mobile-wrapper 要素が見つからないためだと思います。あなたのコードがなければ、これが私が持つことができる最良の推測です。とにかく、まだこの問題がある場合はお知らせください。

ところで、私は思う

$("#header-navigation-link").on('click',function(){
// you code
});

書いたり読んだりするのがより簡単な方法です:)

于 2014-03-17T17:56:41.667 に答える
0

ID がわかっている場合は、再度検索する必要はなく、選択するだけです。

  $(document).on('click', "#header-navigation-link", function () {    
        $("#nav-mobile-wrapper").fadeToggle();
        alert( 'Success!' );
    });
于 2013-09-21T06:13:46.647 に答える