Javascript-event.stopPropagation()在BS4手风琴上无法从父母到孩子工作

时间:2018-08-11 14:25:35

标签: javascript bootstrap-accordion

我正在使用BS4手风琴彼此嵌套。

我已经遇到了父子对子以及子母对子的事件冒泡,我已经使用event.stopPropagation()解决了子子对子的事件,但是为什么父子对子子的冒泡并没有停止呢?

这是代码

$('.card > .collapse').on('shown.bs.collapse', function(e){
    e.preventDefault();  
    e.stopPropagation();
      $(this).parent().find(".flaticon-down-arrow").removeClass("flaticon-down-arrow").addClass("flaticon-right-arrow");

  }).on('hidden.bs.collapse', function(e){
    e.preventDefault();  
    e.stopPropagation();
    $(this).parent().find(".flaticon-right-arrow").removeClass("flaticon-right-arrow").addClass("flaticon-down-arrow");

})

Here is my codepen link

注意:-检查类的更改

1 个答案:

答案 0 :(得分:0)

事件冒泡仅在DOM树上(从子级到父级,再到祖父母级,等等)。它不会在DOM树中消失。因此,父项上的任何事件都不会对子项产生影响。

documentation指出在事件冒泡期间(对于单击事件):

  

浏览器检查在冒泡阶段实际单击的元素是否在其上注册了onclick事件处理程序,如果运行,则运行该处理程序。   然后,它移动到下一个直接祖先元素,然后执行相同的操作,然后是下一个,依此类推,直到到达该元素。