2014-02-28 89 views
0

我正在使用JQuery的工具提示插件,我試圖模擬懸停輸入按鈕,它成功,但我不能點擊上述按鈕。這就像它從來沒有存在於DOM中,或者它可以立即刪除。我不知道爲什麼點擊沒有約束力。JQuery的工具提示不允許按鈕被點擊

http://jsfiddle.net/BgDxs/126/

$("[title]").bind("mouseleave", function (event) { 
     var evt = event ? event : window.event; 

     var target = $(evt.srcElement || evt.target); 

     evt.stopImmediatePropagation(); 

     var fixed = setTimeout(
      function() { 
       target.tooltip("close"); 
      }, 200); 

     $(".ui-tooltip").hover(
        function() { clearTimeout(fixed); }, 
        function() { target.tooltip("close"); } 
       ); 
    }); 
$("[title]").tooltip({ 
     content: "...wait...", 
     position: { my: "left top", at: "right center" }, 
     open: function (event, ui) {    
      var _elem = ui.tooltip; 

      window.setTimeout(
       function() {            
         var html = "<input type='button' value='Card Information' class='card_info_popup'></input>"; 

         _elem.find(".ui-tooltip-content").html(html); 
        }, 
       200); 
     }, 
     track: false, 
     show: 100 
    }); 


$('.card_info_popup').on('click', '.container', function() { 
    alert('click'); 

}); 

回答

2

您使用事件代表團錯誤下面就因斯.container是不是card_info_popup類您輸入的孩子,所以你需要使用:的

$('body').on('click', '.card_info_popup', function() { 
    alert('click'); 
}); 

代替:

$('.card_info_popup').on('click', '.container', function() { 
    alert('click'); 
}); 

Updated Fiddle

+0

我認爲需要委託給父對象的事件? – Undermine2k

+0

@ Undermine2k是的你是正確的,委託事件應該綁定到最近的靜態父。在你的情況下,你的工具提示的所有父母div也是由'jQuery UI'動態創建的,所以'body'在這種情況下是最親密的父母。 – Felix

+0

我看到非常感謝的解釋感謝 – Undermine2k

2

變化:

$('.card_info_popup').on('click', '.container', function() { 
    alert('click'); 

}); 

$(document).on('click', '.card_info_popup', function() { 
    alert('click');  
}); 

更新Fiddle

1

你必須委派on('click');靜態元素,然後將其綁定到動態生成彈出式啓用單擊事件。

我已經更新您的提琴:http://jsfiddle.net/BgDxs/130/

下面是更新後的代碼:

$('body').on('click', '.ui-tooltip input.card_info_popup', function() { 
    alert('click'); 
});