javascript - 无法处理引导弹出窗口内容中的事件

标签 javascript event-handling twitter-bootstrap-3 popover

我需要将一些动态内容放入引导弹出窗口中,并对其进行多个事件处理,但没有一个被触发。 例如:

HTML:

<span id="popover" class="btn btn-default">
    Popover
    <div class="content hide">
        <form id="form">
            <input type="text" class="form-control"/> 
            <button type="submit" class="btn btn-default">Submit</button>
        </form>
        <button id="cancel" type="button" class="btn btn-default">Cancel</button>
    </div>    
</span>

Javascript:

$('#popover').popover({
    html: true,
    placement: 'bottom',
    content: function () {
        return $(this).parent().find('.content').html();
    }
});
$('#popover').on('shown.bs.popover', function () {
    $('#form').submit(function (e) { // never called
        e.preventDefault();
        alert('Form submitted');
    });
    $('#cancel').click(function () { //never called
        $('#popover').popover('hide');
        alert('popover closed');
    });
});

JS fiddle :http://jsfiddle.net/yddRB/

最佳答案

尝试delegating取消并提交事件如下:

取消

$(document.body).on('click',"#cancel",function () {
    $('#popover').popover('hide');
    alert('popover closed');
});

提交

$(document.body).on('submit','#form',function (e) {
     e.preventDefault();
     alert('Form submitted');
});

Event delegation allows us to attach a single event listener, to a parent element, that will fire for all descendants matching a selector, whether those descendants exist now or are added in the future.

Updated Fiddle

关于javascript - 无法处理引导弹出窗口内容中的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23513266/

相关文章:

javascript - 如何用JS为网页创建动态页眉和页脚?

html - 在较小的屏幕上展开元素的高度

css - 将三个容器放在一行中间,每个容器之间填充

html - 如何在 Bootstrap 的 div 下制作三 Angular 形?

javascript - 获取 HTML、CSS 和 Javascript 文件资源的全新副本

Javascript时间转换正则表达式

javascript - 有没有办法将变量从程序内存存储到硬盘保留功能

javascript - Jquery选择器和事件监听逻辑?

css - Internet Explorer 吞噬事件

c# - 检查是否已附加特定的事件处理程序方法