监听元素属性改变,绑定事件(应用于display初始为none)

方法一:利用mutationObserver监听, 原文链接:(10条消息) js实现监听dom元素的属性变化_D_bel的博客-CSDN博客_js监听dom变化

    var flag = true
    var targetNode = jQuery('.detention-mask')[0];//content监听的元素
    //options:监听的属性
    var options = {
        attributes: true,
        childList: true,
        subtree: true,
        attributeOldValue: true,
        attributeFilter: ['style']
    };
    //回调事件
    function callback(mutationsList, observer) {
        if (flag) {
            alert(1111)
            jQuery('.detention-mask .detention-recommend .detention-recommend_item').on('click', function () { console.log($(this)) })
            flag = false
        }
    }
    var mutationObserver = new MutationObserver(callback);
    mutationObserver.observe(targetNode, options);

方法二:利用setInterval持续判断,当属性等于需要的属性值时触发代码并清除计时器

    var timer = setInterval(function () {
        if (jQuery('.detention-mask').css('display') == 'block') {
            alert(111)
            jQuery('.detention-mask .detention-recommend .detention-recommend_item').on('click',
                function () {
                    console.log($(this))
                })
            clearInterval(timer)
        }
    }, 100);

 

posted @ 2021-12-03 16:10  从入门到入土  阅读(1465)  评论(0编辑  收藏  举报