JQuery工具提示不允许单击按钮

时间:2014-02-28 06:46:08

标签: javascript jquery html css

我正在使用JQuery工具提示插件,我正在尝试模拟悬停时的输入按钮,它成功但我无法点击所述按钮。它就像它从未存在于DOM中,或者它可能会存在,但随后会被立即删除。我不确定为什么点击没有约束力。

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');

});

4 个答案:

答案 0 :(得分:2)

变化:

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

});

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

更新了Fiddle

答案 1 :(得分: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

答案 2 :(得分:1)

试试这个。

您必须使用事件委派在新创建的工具提示按钮上启用click事件 http://learn.jquery.com/events/event-delegation/

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

});

答案 3 :(得分:1)

您必须将on('click');委托给静态元素,然后将其绑定到动态生成的弹出窗口。

我更新了你的小提琴:http://jsfiddle.net/BgDxs/130/

以下是更新后的代码:

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