Javascript jQuery上的冲突&x2B;Bootstrap e.stopPropagation()
我使用Bootstrap进行了以下设计,它位于中的Javascript jQuery上的冲突&x2B;Bootstrap e.stopPropagation(),javascript,jquery,twitter-bootstrap,Javascript,Jquery,Twitter Bootstrap,我使用Bootstrap进行了以下设计,它位于中的dropdown.js: 单击搜索条件按钮后,将显示一个高级下拉菜单(实际上,它是一个实现dropdown.js)的表单。这种设计的缺点是,每次单击表单中的任何元素时,表单都将隐藏(下拉菜单的默认行为)。因此,用户无法键入/选择表单的任何控件。解决这个问题的办法很简单: $("form input, form select") .click(function(e) { e.stopPropagation();
dropdown.js
:
单击搜索条件按钮后,将显示一个高级下拉菜单(实际上,它是一个实现dropdown.js
)的表单。这种设计的缺点是,每次单击表单
中的任何元素时,表单都将隐藏(下拉菜单的默认行为)。因此,用户无法键入/选择表单的任何控件。解决这个问题的办法很简单:
$("form input, form select")
.click(function(e) {
e.stopPropagation();
});
但问题是上面的代码也会影响按钮组模式
的默认行为,这是Bootstrap的Checkbox/Radiobutton.js
的一个实例。上述代码导致此按钮组不可更改(例如,即使您单击按钮高级
,也将始终选择按钮详细
)
我怎么能不让下拉列表.js
和按钮.js
相互冲突呢?如果搜索条件表单可见,停止传播怎么样
$("form input, form select").click(function(e) {
if ($("#searchCriteriaFormId").is(":visible") ) {
e.stopPropagation();
}
});
这就是帮助我的代码。我没有避免使用e.stopPropagation()
:
你能用一个问题来表示这个问题吗?您是否尝试过使用focus()
而不是click()
?演示可以帮助你发布相关的HTML吗?试试手动实现,比如@Alteyss我附加了一个
$("form.dropdown-menu, form.dropdown-menu .form-control").click(function(e) {
e.stopPropagation();
})
$("form.dropdown-menu label.btn").click(function(e) {
$(this).closest("form.dropdown-menu").find("label.btn").removeClass("active")
$(this).closest("form.dropdown-menu").find("label.btn input").removeAttr("checked")
$(this).addClass("active")
$(this).find("input").attr("checked", "")
e.stopPropagation();
})