设置twitter bootstrap popover以在某个事件之后隐藏,然后在另一个事件之后显示

时间:2013-11-22 05:15:33

标签: javascript jquery twitter-bootstrap

用户在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中显示。

1 个答案:

答案 0 :(得分:1)

您将同一类型的多个事件绑定到popover。

相反,在条件逻辑中,如果满足条件,则应绑定一个事件,否则绑定事件。

所以在你的else声明中你应该有类似的东西:

else {
    $("[rel=next-popover]").popover({
    placement: "right",
    trigger: "manual"
    })
    .off( "mouseenter mouseleave" ).off("click");
}

Fiddle here