javascript - 事件委托(delegate)问题

标签 javascript jquery twitter-bootstrap

我正在尝试使用这个 jQuery 插件: http://ethaizone.github.io/Bootstrap-Confirmation/#

我通过 AJAX 加载按钮这一事实导致了我的问题。我知道我需要事件委托(delegate)来解决这个问题,但遗憾的是我不知道如何正确地做到这一点。

我当前的代码是:

        (function($) {

        $(document).on( "click", "a[data-toggle='confirmation']", function( event ) {
            $(this).confirmation()
        });

    }(jQuery));

还有 HTML 按钮:

<a href='test' class='btn btn-primary' data-toggle='confirmation'>Click me</a>

遗憾的是有一些问题。如果我单击该按钮,它会将我重定向到给定的 href 属性,而不会先显示对话框。如果我删除了 href,那么我需要单击该按钮 2 次才能打开对话框(之后单击同一个按钮就足以再次打开它)。

我做错了什么?

最佳答案

超链接之后是浏览器对具有 href 属性的 a 元素的默认操作。您需要通过调用 preventDefault 告诉浏览器不要这样做:

$(document).on( "click", "a[data-toggle='confirmation']", function( event ) {
    event.preventDefault();
    $(this).confirmation()
});

看起来该库希望您提供一个 data-href 属性,如果用户接受确认,它是要浏览到的 URI:

<a href='test' class='btn btn-primary' data-toggle='confirmation' data-href="/accept-url">Click me</a>

关于javascript - 事件委托(delegate)问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29592833/

相关文章:

javascript - 后续的 POST 不会更新弹出窗口中的内容

javascript - 如何在php中将复选框值传递到一页另一页?

Javascript 一行 if else 简写困惑

javascript - 绝对位置第二次不起作用

javascript - 自定义指令的多个实例失败

javascript - 有什么方法可以在 Backbone 中使用 JSX 或类似的东西吗?

jquery - 自定义 slider handle 捕捉到光标?

jquery - 首次打开时 Colorbox 无法以正确的高度打开

javascript - 没有面板的 Bootstrap Accordion

html - Bootstrap 轮播中的图像未填充轮播区域