Jquery 我的自举popover没有';t触发事件定义的函数
我想向您展示一个jQuery/引导代码。我在JSFIDLE中提取所需的代码:。这种行为是:Jquery 我的自举popover没有';t触发事件定义的函数,jquery,twitter-bootstrap,jquery-events,Jquery,Twitter Bootstrap,Jquery Events,我想向您展示一个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()的选择器,则应该可以。