Jquery 我的自举popover没有';t触发事件定义的函数

Jquery 我的自举popover没有';t触发事件定义的函数,jquery,twitter-bootstrap,jquery-events,Jquery,Twitter Bootstrap,Jquery Events,我想向您展示一个jQuery/引导代码。我在JSFIDLE中提取所需的代码:。这种行为是: 运行jsfiddle项目 将鼠标移到ipsum文本上 在显示的引导弹出窗口上,单击“显示更多>>”链接 单击时的功能为触发器,并显示一个新窗口800x600 关上这个窗户 转到第2步 代替步骤4.,该功能不会触发,而是打开一个新选项卡 我确实希望在用户每次单击“显示更多>>”时触发该功能 我很确定javascript代码就是问题所在:范围、变量、冲突。。。我不知道 你对什么地方出了问题有什么意见、建议或良

我想向您展示一个jQuery/引导代码。我在JSFIDLE中提取所需的代码:。这种行为是:

  • 运行jsfiddle项目
  • 将鼠标移到ipsum文本上
  • 在显示的引导弹出窗口上,单击“显示更多>>”链接
  • 单击时的功能为触发器,并显示一个新窗口800x600
  • 关上这个窗户
  • 转到第2步
  • 代替步骤4.,该功能不会触发,而是打开一个新选项卡
  • 我确实希望在用户每次单击“显示更多>>”时触发该功能

    我很确定javascript代码就是问题所在:范围、变量、冲突。。。我不知道

    你对什么地方出了问题有什么意见、建议或良好的做法吗

    。 我讲的功能是:

    function (e) {
        e.preventDefault();
        var width  = 800,
            height = 600,
            left   = ($(window).width()  - width)  / 2,
            top    = ($(window).height() - height) / 2,
            url    = this.href;
        var opts   = 'status=1' +
                     ',width='  + width  +
                     ',height=' + height +
                     ',top='    + top    +
                     ',left='   + left;
        window.open(url, 'manual', opts);
        return false;
    }
    
    你的问题很简单

    首先,您有一个函数“formatPopoverContent”,用于生成popover html内容。您可以在此处绑定单击事件

    问题是函数只执行一次,但引导程序生成的popover会创建popover div,并动态地将其插入DOM中(当您悬停时,就会创建div,鼠标悬停时就会从DOM中删除div)。 在函数中,使用cordialmanallink.on('click',…)绑定click事件,其中cordialmanallink是函数首次创建的,但随后被poover删除(我不知道是否非常清楚…)。按照绑定事件的方式,新创建的元素不会被绑定

    这就是为什么在你的小提琴中,不仅当你第二次点击时,如果你悬停,然后鼠标移出,然后再次悬停(没有第一次点击),你不会得到一个新的窗口

    解决方案是“实时”绑定click事件,这样即使创建了新元素,它们也会被绑定

    因此,解决方案就是简单地做到:

    $(document).on('click', cordialManualLink, …);
    
    而不是

    cordialManualLink.on('click', …);
    

    我可以绑定多个事件,如
    $(document).on('click',showMoreLink,myFunction)
    $(文档)。在('click',另一个linkinpover,另一个函数)等?在更新的JSFIDLE上,无论用户在何处单击,甚至在页面的空白部分,都会触发该函数。我做错什么了吗?是的,您可以通过这种方式将多个元素绑定到任何事件$(事件、选择器、处理程序());是使用depracated live函数的新方法,它允许您“为当前和将来匹配当前选择器的所有元素附加一个事件处理程序。”()当我转到JSFIDLE时,我仍然看到第一个版本:/更新的版本在那里:我发现是选择器使用了错误的方式。我必须选择要由类名绑定的DOM元素,而不是由jQuery对象绑定的DOM元素。。。我是对的吗?是的,你是对的,我的错,没有真正注意到什么是Cordialmanualink。jQuery的on()期望第二个参数是选择器。在这里,它是一个使用jQuery动态构建的元素,因此它可能确实不起作用。如果您添加一个类(或使用一个指向您的类的关联选择器)并将其用作on()的选择器,则应该可以。