1

これはclone()と関係があると確信していますが、何も見つかりませんでした。私の問題は、アンカー付きのHTMLを追加していることです。これらのアンカーはclick()に応答してから、ajax呼び出しを開始する必要があります。アンカーのデフォルトイベントが$('。terma')で機能するのを止めることができないようです。

(function($) { 
$(document).ready(function() {
var item = '#main-menu li';
var http_addy = 'http://windowsdeveloper.loc';
// voacabulary id is set in the menu. If one is found then load the terms to the   menu
$('*[id*=vocabulary]:visible').each(function() {
            var voc_id = $(this).attr('id').split('-');
            var parent_li = $(this).parent('[class^=menu-]');
            $.get(http_addy + '/category/content/term_list/' + voc_id[1], function(data) {
                    $(parent_li).append(data);
            });
     });
   // use this to get the terms nodes
    $('div.term a').click(function(event){
            var url = $(this).attr('href');
            $.get(url, function(data) {
                    $('#term-nodes').append(data);                      
            });
            return false;
    });

    $(item).mouseenter(function(event){
        // Styles to show the box
            $(this).children('.vocabulary').show();
        }       
    );
    $('.navigation').mouseleave(
        function() {
            $('#main-menu li').children('.vocabulary').hide();
        }
    );
});
})(jQuery);



<ul id="main-menu" class="links inline clearfix main-menu">
<li class="menu-1050 first">
<a id="vocabulary-3" href="/newsarticletopics/windowsdeveloper">Articles</a>
<div id="term-nodes"></div>
<div id="voc-3" class="vocabulary" style="display: none;">
<div id="term-12" class="term">
    <a href="/category/content/term_nodes/12">Serien</a>
</div>
</div>
</li>
4

2 に答える 2

4

これは、一部のコンテンツを動的にロードして DOM を更新しているためです。onこのようにクリックイベントをバインドするには、 jQueryを使用する必要があります

// use this to get the terms nodes
$(document).on("click",".term a",function(event){
        event.preventDefault();
        var url = $(this).attr('href');
        $.get(url, function(data) {
                $('#term-nodes').append(data);                      
        });           
});

jQuery on は、DOM の現在および将来の要素に対して機能します。onjQuery 1.7 以降で使用できます。それより前のバージョンを使用している場合は、live

于 2012-06-07T12:33:53.500 に答える
0
$("selector").on("click", function(e){

 // Do some code here

});

古いバージョンの jQuery を使用している場合は、.delegate() を使用できます

$("selector").delegate("click", function(e){

  // .delegate() takes the parameters a bit differently i think , correct me if i am wrong
 // Do some code here

});

動的に作成された要素のイベントバインディング?

于 2012-06-07T12:38:33.960 に答える