Javascript 如何停止“单击”冒泡通过accordion标头中的输入元素以避免激活accordion元素

Javascript 如何停止“单击”冒泡通过accordion标头中的输入元素以避免激活accordion元素,javascript,jquery,knockout.js,accordion,Javascript,Jquery,Knockout.js,Accordion,我得到了一个jQuery accordion,在accordion头中有一个。 手风琴是“可折叠的”,但我不希望在内单击时项目展开(或折叠) 如何停止单击事件在元素中冒泡,以避免激活手风琴元素 是否有一些聪明的方法来应用event.stopPropagation()(或类似的东西)在激活之前,是否先激活手风琴-回调? 或者可以直接在的数据绑定上执行此操作 从我的bindingHandler: $(element).accordion({ header: ".

我得到了一个jQuery accordion,在accordion头中有一个
。 手风琴是“可折叠的”,但我不希望在
内单击时项目展开(或折叠)

如何停止
单击
事件在
元素中冒泡,以避免激活手风琴元素

是否有一些聪明的方法来应用
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();
};