0

1ページのサイトに次のコードがあります:

    <section class="block" id="panel1">
    </section>
    <section class="block" id="panel2">
    <div class="loadcontent">
    <div class="vcard">
    [content here]
    <a href="detail1.html">Proceed to detail level1</a>
    </div>
    </div>
    </section>
    <section class="block" id="panel3">
    <div class="loadcontent">
    <div class="vcard">
    [content here]
    </div>
    </div>
    </section>

私が使用しているjqueryはこれです:

<script>
jQuery(function($) {
                $(".loadcontent").on("click","a",function(ev) {                   
                    ev.preventDefault();
                    var $el = $(this);
                    var $lc = $el.closest(".loadcontent");
                    URLtarget = $el.attr("href");

                    //alert("URL:"+URLtarget+"\nZIndex:"+zindex+"\nATTR:"+$el.className);
                    $.ajax({
                        url: URLtarget, 
                        data: {},
                        type: 'post',
                        error: function(XMLHttpRequest, textStatus, errorThrown){
                            alert('status:' + XMLHttpRequest.status + ', status text: ' + XMLHttpRequest.statusText);
                        },
                        success: function(data){
                            $lc.find(".vcard").fadeOut(1000,function() {                                
                            });                             
                            $lc.append(data);
                        }
                    });
                });
});

detail1.htmlは次のコードを持っています:

    <div class="vcard">
    <div><a href="#" class="closeme"> &times; CLOSE </a></div>
    [content here]
    <a href="detail2.html">Proceed to detail level1</a>
    </div>

詳細 1とdetail2.html同じですが、コンテンツ テンプレート (およびデータ) が異なります。最初のリンクを起動すると、detail1.html が正常に読み込まれますが、detail2.html の detail1.html 内をクリックすると、新しいページが表示されます (ajax が機能しません)。$.on() は、dom に追加されたすべてのイベントを「リッスン」していると思いましたが、正しいアプローチは何ですか?

また、リンクに別の .on を使用しようとしまし.closemeたが、うまくいきません。ドキュメントの先頭に移動します。

誰でも光を当てることができますか?

4

2 に答える 2

0

だから実際に私は答えを見つけました、それはここSOで異なって尋ねられました。

代わり$(_selector_).on("click","a",function() { ... });$(document).on("click","_selector_ a",function() { ... });

于 2013-03-20T14:50:10.647 に答える
0

ブロックを生成している場合<section>、イベントハンドラーはそれらに設定されません。委任に使用す​​る場合、現在DOMに存在する要素にonのみイベントハンドラーをアタッチできるかどうかを覚えておいてください。追加される要素がわからない場合に使用してください。$(document).on()

于 2013-03-20T14:50:19.147 に答える