1

HTMLテーブルがあり、各行に「編集」アイコンを追加します。マウスがアイコンに入ると、メニューがポップアップします。document.ready 関数ではイベント mouseenter が有効です。しかし、dajax を介して新しい行を追加すると、イベント mouseenter は無効になります。

function add_finding(table_type){
if(!check_finding_attribute(table_type))
    return;
else{
Dajaxice.codeinsight.add_finding(Dajax.process,get_finding_attribute_dict(table_type));
    reset_finding_attribute(table_type);
    //reload the popup menu
    $(".menubox").each(function(){
        var menubox_id=$(this).attr("id");
        var showmenu_id=menubox_id.replace("menubox","showmenu");
        $.showmenu("#"+showmenu_id,"#"+menubox_id);
    });
}
}

$(document).ready(function(){
jQuery.showmenu = function(showbtnid,showboxid) {
    var showmenubtn = $(showbtnid);
    var showmenubox = $(showboxid);
    showmenubtn.mouseenter(function(e){
        var thish = $(this).height();
        var offset = $(this).offset();
        var tipx = offset.left;
        var tipy = offset.top+thish-1;
        showmenubox.show().css("left",tipx).css("top",tipy);
        t= setTimeout(function(){showmenubox.hide();},1000);
      });
    showmenubox.mouseenter(function(){
        clearTimeout(t);
    });
    showmenubox.mouseleave(function(){
        $(this).hide();
    });
};
$(".menubox").each(function(){
    var menubox_id=$(this).attr("id");
    var showmenu_id=menubox_id.replace("menubox","showmenu");
    $.showmenu("#"+showmenu_id,"#"+menubox_id);
});
});
4

1 に答える 1

0

コンテンツが AJAX 経由で送られてきて、それにイベントをバインドしたい場合は、そうする必要があります。

jQuery.on(...)

それらの場合、通常のイベントバインディングは機能しません。

jQuery.on("mouseenter", showbtnid,function(){...})

上記のバインディングは、既存の要素だけでなく、将来的に新しく追加された要素も処理します。

ハッピーコーディング:)

于 2013-03-11T06:43:12.677 に答える