Javascript 如何停止“单击”冒泡通过accordion标头中的输入元素以避免激活accordion元素
我得到了一个jQuery accordion,在accordion头中有一个Javascript 如何停止“单击”冒泡通过accordion标头中的输入元素以避免激活accordion元素,javascript,jquery,knockout.js,accordion,Javascript,Jquery,Knockout.js,Accordion,我得到了一个jQuery accordion,在accordion头中有一个。 手风琴是“可折叠的”,但我不希望在内单击时项目展开(或折叠) 如何停止单击事件在元素中冒泡,以避免激活手风琴元素 是否有一些聪明的方法来应用event.stopPropagation()(或类似的东西)在激活之前,是否先激活手风琴-回调? 或者可以直接在的数据绑定上执行此操作 从我的bindingHandler: $(element).accordion({ header: ".
。
手风琴是“可折叠的”,但我不希望在
内单击时项目展开(或折叠)
如何停止单击事件在
元素中冒泡,以避免激活手风琴元素
是否有一些聪明的方法来应用event.stopPropagation()
(或类似的东西)在激活之前,是否先激活手风琴-回调?
或者可以直接在
的数据绑定上执行此操作
从我的bindingHandler:
$(element).accordion({
header: ".accordion-header",
collapsible: true,
navigation: true,
heightStyle: "content",
active: false,
beforeActivate: function (event, ui) {
active = $(this).accordion("option", "active");
},
activate: function (event, ui) {
event.stopPropagation(); // This obviously has no effect
}
})
你做得很对。stopPropagation()
是正确的,你只是没有把它放在正确的位置,它会进入输入的点击处理程序
前
HTML
你做得很对。stopPropagation()
是正确的,你只是没有把它放在正确的位置,它会进入输入的点击处理程序
前
HTML
你做得很对。stopPropagation()
是正确的,你只是没有把它放在正确的位置,它会进入输入的点击处理程序
前
HTML
你做得很对。stopPropagation()
是正确的,你只是没有把它放在正确的位置,它会进入输入的点击处理程序
前
HTML
我正在使用knockoutJS和click绑定。因此,我应该将它与我的内部someFunction
(我已经在使用)一起放在哪里,或者放在另一个事件中:{click:someOtherFunction}
?请记住,不要将()放在HTML中的函数之后。这将迫使它在html呈现时执行谢谢,Scott,但是当输入具有焦点时,手风琴仍在扩展/折叠<调用了code>clickHandler
(使用alert();)进行测试),但e.stopPropagation和e.preventDefault似乎对手风琴行为没有影响。这可能是由于渲染时
不可见造成的吗?(我有一个
可以显示出来)。找到了$('#myaccordioId').accordion({beforeActivate:function(event,ui){event.preventDefault();}});将其放入单击处理程序中可防止手风琴激活其内容。必须在使用$('#myaccordioId').accordion({beforeActivate:function(event,ui){active=$('#accordion').accordion(“option”,“active”);}完成对
的编辑后重新激活;我正在使用knockoutJS和click绑定。因此,我应该将它与我的内部someFunction
(我已经在使用)一起放在哪里,或者放在另一个事件中:{click:someOtherFunction}
?请记住,不要将()放在HTML中的函数之后。这将迫使它在html呈现时执行谢谢,Scott,但是当输入具有焦点时,手风琴仍在扩展/折叠<调用了code>clickHandler
(使用alert();)进行测试),但e.stopPropagation和e.preventDefault似乎对手风琴行为没有影响。这可能是由于渲染时
不可见造成的吗?(我有一个
可以显示出来)。找到了$('#myaccordioId').accordion({beforeActivate:function(event,ui){event.preventDefault();}});将其放入单击处理程序中可防止手风琴激活其内容。必须在使用$('#myaccordioId').accordion({beforeActivate:function(event,ui){active=$('#accordion').accordion(“option”,“active”);}完成对
的编辑后重新激活;我正在使用knockoutJS和click绑定。因此,我应该将它与我的内部someFunction
(我已经在使用)一起放在哪里,或者放在另一个事件中:{click:someOtherFunction}
?请记住,不要将()放在HTML中的函数之后。这将迫使它在html呈现时执行谢谢,Scott,但是当输入具有焦点时,手风琴仍在扩展/折叠<调用了code>clickHandler
(使用alert();)进行测试),但e.stopPropagation和e.preventDefault似乎对手风琴行为没有影响。这可能是由于渲染时
不可见造成的吗?(我有一个
可以显示出来)。找到了$('#myaccordioId').accordion({beforeActivate:function(event,ui){event.preventDefault();}});将其放入单击处理程序中可防止手风琴激活其内容。必须在使用$('#myaccordioId').accordion({beforeActivate:function(event,ui){active=$('#accordion').accordion(“option”,“active”);}完成对
的编辑后重新激活;我正在使用knockoutJS和click绑定。因此,我应该将它与我的内部someFunction
(我已经在使用)一起放在哪里,或者放在另一个事件中:{click:someOtherFunction}
?请记住,不要将()放在HTML中的函数之后。这将迫使它在html呈现时执行谢谢,Scott,但是当输入具有焦点时,手风琴仍在扩展/折叠<调用了code>clickHandler(使用alert();)进行测试),但e.stopPropagation和e.preventDefault似乎对手风琴行为没有影响。这可能是由于渲染时
不可见造成的吗?(我有一个
可以显示出来)。找到了$('#myaccordioId').accordion({beforeActivate:function(event,ui){event.preventDefault();}});将其放入单击处理程序可防止手风琴
$(document).on('click', '.my-input', function(e){
e.preventDefault(); // throw this in for good measures too
e.stopPropigation();
// your code to handle click here
});
<input data-bind="click: clickHandler" />
clickHandler = function(e){
e.preventDefault(); // throw this in for good measures too
e.stopPropigation();
};