2013-03-11 2 views
1

HTML 테이블이 있으며 각 행에 아이콘을 입력하면 "편집"아이콘이 추가되어 메뉴가 팝업됩니다. document.ready 함수에서 이벤트 mouseenter가 효과적입니다. 그러나 dajax를 통해 새 행을 추가하면 이벤트 mouseenter가 비효율적입니다.아약스를 통해 콘텐츠를 추가했지만 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); 
}); 
}); 

답변

0

콘텐츠가 AJAX를 통해 전송되고 있으며 해당 콘텐츠도 AJAX에 바인딩하려는 경우 사용자에게 알려야합니다.

jQuery.on(...) 

일반 이벤트 바인딩은 작동하지 않습니다.

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

위의 바인딩은 향후 기존 요소뿐만 아니라 새로 추가 된 요소도 처리합니다.

해피 코딩 :

관련 문제