【问题标题】:jQuery - Trigger Event on .children().size() changejQuery - 在 .children().size() 更改时触发事件
【发布时间】:2011-10-16 05:30:50
【问题描述】:

我已经搜索了近处和远处,但我无法弄清楚如何在子元素的 size() 上放置一个监听器。我想做的是:

我有一个包含 0-6+ 子元素的 div。这个数字没有定义,因为我正在制作购物车。而不是 onclick 可以更改购物车中项目数量的每个按钮(即添加到购物车 btn、清空购物车按钮、更改数量等)我想要一个监听器,当 $("#cart").children().size() 更改时,如果语句检查购物车中不同项目的#of 是否大于 3。如果是,则更改 div 的高度。

购物车布局示例:

<div id='cart'>
     <div class='item'></div>
     <div class='item'></div>
</div>

实际代码站点在:http://www.jamesendres.com/projects/ad/throw-pillows.html

【问题讨论】:

    标签: jquery html css


    【解决方案1】:

    我担心 div 没有change 事件,所以听它是不可能的。另一方面,您可以创建自己的处理程序来克服这种情况。

    我创建了一个显示概念证明的小提琴:link

    代码很简单,我想你可以很容易地理解它。希望这会有所帮助。

    【讨论】:

    • 这与我想要做的很接近。首先感谢您的帮助。我说的改变是错误的。更改仅适用于输入、选择、无线电。我想要做的是在购物车 div 上放置一个侦听器,以查看何时添加或删除项目,而不是在执行添加或减去的按钮上设置侦听器。至少有 5 种不同的方式可以在篮子中添加或删除项目,我试图避免不得不听 5+ 按钮,而只听#cart.children().size()。
    • 除非唯一的方法是观察点击事件。
    • 是的,我理解你。如何实现这一点的另一种选择是创建自定义 jQuery 插件。插件应该添加到您的#cart 项目(如$("#cart").pluginName())中,然后每次当您想要使用该元素时,您应该使用插件的方法(如$("#cart").pluginName("add", params)$("#cart").pluginName("remove", params))。我认为这听起来很棘手,但如果你不能处理这个问题,请说,我会尽力提供帮助。
    • 感谢您的帮助,一切顺利!我将尝试使用该插件,尽管对于按钮的数量,我可以使用您的其他答案。无论哪种方式,我都非常感谢您的帮助。
    • 不客气,感谢您的投票!这真的很激励我。 :-)
    【解决方案2】:

    你可能想要 "DOMNodeInserted" event.like:

    $('ol').bind('DOMNodeInserted', function() {
        alert('node inserted');
    });
    

    看到这个答案: https://stackoverflow.com/a/5033719/907753

    【讨论】:

    • 现在已弃用。 bind 函数在 JQuery 中已弃用,DOMNodeInserted 事件在浏览器中已弃用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-16
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多