用户在textarea中进行更改。当发生这种变化并且另一个条件为真时(在这种特殊情况下,条件是文本字段包含"是"),我显示一个引导程序弹出窗口。
showPopover = function() {
return $(this).popover("show");
};
hidePopover = function() {
return $(this).popover("hide");
};
var cond = true;
$("textarea").on("change keyup", function (e) {
var pt = $("#user_user_profile_attributes_title").val();
if (cond&&pt=="yes") {
$("[rel=next-popover]").popover({
placement: "right",
trigger: "manual"
})
.hover(showPopover, hidePopover).click(showPopover);
}
else {
$("[rel=next-popover]").popover({
placement: "right",
trigger: "manual"
})
.hover(hidePopover, hidePopover).click(hidePopover);
}
});
重现的步骤: 1)转到http://jsfiddle.net/bpjavascript/KscL5/ 2)在文本字段中键入yes 3)对文本区域进行更改。单击/悬停时查看弹出窗口 4)改变其他的东西&在文本字段中进行更改,没有弹出窗口 5)将文本字段改回yes和&在文本字段中进行更改 - 现在您应该看到一个简短的弹出窗口。为什么是这样?我希望它在步骤3中显示。
答案 0 :(得分:1)
您将同一类型的多个事件绑定到popover。
相反,在条件逻辑中,如果满足条件,则应绑定一个事件,否则绑定事件。
所以在你的else
声明中你应该有类似的东西:
else {
$("[rel=next-popover]").popover({
placement: "right",
trigger: "manual"
})
.off( "mouseenter mouseleave" ).off("click");
}