Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQuery检测类更改_Javascript_Jquery - Fatal编程技术网

Javascript JQuery检测类更改

Javascript JQuery检测类更改,javascript,jquery,Javascript,Jquery,我正在使用一个插件,它在中添加了一个类open 因此,如果检测到打开,我将尝试更改一些css 我需要做的是 IF $('.slide-out-div **open**') IS Detected then $('.otherDiv').css('top','0px'); 不确定如何将其组合在一起…没有添加类事件,您需要自己跟踪它 可以使用带有setTimeout的无限循环来检查类是否已更改 function checkForChanges() { if ($('.slide-out

我正在使用一个插件,它在
中添加了一个类
open

因此,如果检测到打开,我将尝试更改一些css

我需要做的是

IF

$('.slide-out-div **open**') IS Detected then

$('.otherDiv').css('top','0px');

不确定如何将其组合在一起…

没有添加
类事件,您需要自己跟踪它

可以使用带有
setTimeout
的无限循环来检查类是否已更改

function checkForChanges()
{
    if ($('.slide-out-div').hasClass('open'))
        $('.otherDiv').css('top','0px');
    else
        setTimeout(checkForChanges, 500);
}
您可以在需要时调用该函数,也可以在onDOM就绪时调用该函数:

$(checkForChanges);
你可以用。该插件的主要功能是在HTML元素的属性更改时绑定侦听器函数

代码示例:

$("#myDiv").attrchange({
    trackValues: true, // set to true so that the event object is updated with old & new values
    callback: function(evnt) {
        if(evnt.attributeName == "class") { // which attribute you want to watch for changes
            if(evnt.newValue.search(/open/i) == -1) { // "open" is the class name you search for inside "class" attribute

                // your code to execute goes here...
            }
        }
    }
});

这个问题有点老了,但因为我在寻找类似问题时遇到了,所以我想在这里分享我的解决方案-

在你的情况下,我会创建一个突变观察者

var mut = new MutationObserver(function(mutations, mut){
  // if attribute changed === 'class' && 'open' has been added, add css to 'otherDiv'
});
mut.observe(document.querySelector(".slide-out-div"),{
  'attributes': true
});
突变观察者中的函数在.slide out div的属性更改时被调用,因此需要在执行操作之前验证实际更改


更多详情请参见

课程何时增加?@MildFuzz。我猜他没有控制它,它是一个插件…你在用什么插件?将解决方案应用到所使用的脚本中似乎是一个更好的计划。此外,插件作者可能已经添加了自定义事件。值得一看。这可能是重复的。然而,如果你问我,这是一个非常肮脏的方法。@sieppl<代码>变异事件
不推荐使用,因为它们对性能有巨大影响。@gdoron+感谢您提到这一点。@gdoron-他们没有被弃用!(检查MDN)旧的是,突变观察者是检测变化的新方法。以下是-@Healkiss的用法,它完全一样。堆栈不会无限增长。这看起来是一个很好的方法,但应该注意的是,它在IE10和更旧版本中似乎没有支持。这个建议非常好,因为native:)谢谢你的分享。