javascript 特定条件下的触发事件

6tqwzwtp  于 2022-11-20  发布在  Java
关注(0)|答案(2)|浏览(181)

我有一个div,它将作为其他元素容器,我有一些按钮,它们将元素添加到该div中。
请参阅demo以获得有关它的概念。
所以,我想做的是在添加新元素之前检查div是否达到了我定义的最大元素数,比如说4。
我可以在每次添加之前检查此条件,但我确信这不是最好的方法(我们了解到,如果代码包含复制/粘贴,则不是最好的解决方案)此外,这只是一个示例,在我的情况下,我有许多按钮。
有没有办法拥有这样一个倾听者?

$('#container').bind('divFull', function(){
    //My code
});

这样我就可以禁用按钮..

r1wp621o

r1wp621o1#

首先,你必须监听DOM change事件,然后你可以根据孩子的数量触发一个自定义事件

$('#container').bind('DOMSubtreeModified', function(){
    if($(this).children().length>=4){
        $(this).trigger('divFull');
    }
});

然后可以绑定到自定义divFull事件

$('#container').bind('divFull', function(){
    alert('container is full');
    $('button').prop('disabled',true);
});

基于您的示例的working demo

iih3973s

iih3973s2#

我对@skafandri方法做了一点修改,因为DOMSubtreeModified事件在IE〈9上不起作用,并且已经过时了。主要的修改是创建一个函数,如果divFull事件在容器中有4个子事件,该函数将调用该事件。

var checkFull = function() {
    if ($container.children().length === 4) {
        $container.trigger('divFull');
    }
}

$('#button1').click(function(){
    $container.append('<div class="element">some text</div>');
    checkFull();
});

这里是the demo

相关问题