【问题标题】:Jquery removeClass not work on my wordpress themeJquery removeClass 不适用于我的 wordpress 主题
【发布时间】:2022-01-18 03:50:56
【问题描述】:

我有这个代码:

jQuery(document).ready(function(){

//Control map markers state
jQuery('body').on('click', '.jet-map-marker', function addPinActive(){

    var pinIcon = jQuery(".jet-map-marker");
    
    if(!pinIcon.hasClass('activeLocation'))
    {
        jQuery(this).addClass('activeLocation');
    }
    else if(pinIcon.hasClass('activeLocation'))
    {
        jQuery('.jet-map-marker').removeClass('activeLocation');
        jQuery(this).addClass('activeLocation');
    }
});

**//CODE NOT WORKING:**

jQuery('.jet-map-close').on('click', function()
{
    jQuery('.jet-map-marker').removeClass('activeLocation');
});

});

在第一部分中,removeClass 函数可以正常工作,但在第二部分(带有评论的市场)中则不行。我将 jquery 添加到 WordPress 主题中,因此第一部分工作正常。

有人可以帮帮我吗?

【问题讨论】:

  • 我猜您需要将第二部分放在 document.ready 处理程序中。第一个事件处理程序在没有 this 的情况下工作,因为它被委托给 body

标签: jquery wordpress customization


【解决方案1】:

这可能与第二个点击侦听器位于第一个点击侦听器之上的事实有关(元素位于“body”中,上面有一个点击侦听器) - 这导致点击删除按钮也触发对身体的点击。尝试按照此示例添加e.stopPropagation()

$('body').on('click', function() {
console.log('body clicked');
})

$('.b0').on('click', function() {
console.log('button 0 clicked');
})

$('.b1').on('click', function(e) {
e.stopPropagation()
console.log('button 1 clicked');
})
body{
height:100%;
background:#f0f0f0;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<body>
<button class='b0'>click first</button>
<button class='b1'>click second</button>
</body>

【讨论】:

  • 您好 Kinglish,感谢您的回答,但仍然无法正常工作。我尝试了多种形式但没有解决方案
猜你喜欢
  • 2015-10-01
  • 1970-01-01
  • 2012-08-15
  • 1970-01-01
  • 2012-01-15
  • 1970-01-01
  • 2019-12-05
  • 2021-01-16
  • 2014-08-12
相关资源
最近更新 更多