9

こんにちは、クリックされたリンクに応じて、インデックス ページにいくつかの html ページを読み込んでいます。クリック イベント ハンドラが関連付けられているリンクに問題があります。それらにバインドされたクリックイベントハンドラーがあります。これが私のコードです:

これは、機能しないリンクの 1 つの HTML です。

<a href="#" id="NavContactPage" data-sectionId="Skills">skills</a>

これは、それに関連付けられた jquery コードです。

$("nav a , a.first_anchor , a#NavContactPage").click(function(){
    var id = $(this).attr("data-sectionId");
    var link = "load/" + id + ".html";

    $("div#Content").load(link , function(){
        $("section#" + id).fadeIn(); 
        if(id === "Portfolio"){
            $('div.slide').cycle('fade');
        }
        if(id === "Home"){
            $("#jcycleslider").cycle({
                fx: mtransition,
                easing: easing,
                before: onBefore,
                after: onAfter,
                speed: mpace,
                timeout: mnext,
                sync: msync,
                randomizeEffects:0,
                pager:'#jslider_nav'
            })
            $("#jslider_nav a").text("");
        }    
    })      
    return false;
})

どうすればこの問題を解決できますか?

4

4 に答える 4

11

$("selector").click(...)clickクエリを実行したときにjQueryに表示される要素へのイベントのコールバックのみを登録します。そのため、このセレクターに一致する新しく追加された要素には、コールバックは適用されません。

新しく追加された要素へのコールバックを再度登録するか、次を使用する必要があります。

$(document).on('click',"nav a , a.first_anchor , a#NavContactPage", ... );

ドキュメントをルートとして使用する代わりに、コンテンツをロードする要素などをルートとして使用することをお勧めします。$("div#Content").on( .... );

于 2013-01-15T14:05:52.450 に答える
4

私が理解しているように、.on() で委任を使用する必要があります。

$(document).on('click',"nav a , a.first_anchor , a#NavContactPage",function(){...}
于 2013-01-15T13:59:52.763 に答える
3

.load() 関数を使用して html をメイン ページにインポートしていたときに、この問題に遭遇しました。私はこれを私の準備ができた関数の中に入れました、そしてそれは私のために働きました

$(document).on('click','#btninsertrequest',function(){
alert("yes");
}); 
于 2016-03-05T22:51:33.080 に答える
0

jqueryの準備ができてあなたのイベントをバインドしていますか?

イベント バインディング コードは内部に配置し、クリックの代わりに使用する必要があります。それはあなたの問題を解決するはずだと思います。

$(function(){

  // Bind event here

});
于 2013-01-15T14:09:22.723 に答える