【问题标题】:Select each dynamic inner div in event bubbling在事件冒泡中选择每个动态内部 div
【发布时间】:2015-10-12 11:24:23
【问题描述】:

我有一个像这样的静态 HTML 容器 div:

<div id="dvExchangeNames">
</div>

document.ready() 事件中,我使用Ajax 调用获取了一些字符串,并将每个字符串作为div 内容附加到容器dvExchangeNames 中。新的 HTML 如下所示:

<div id="dvExchangeNames">

  <div class='drop'> Foo </div>
  <div class='drop'> Bar </div>

</div>

我需要用 drop 类在 div 上绑定 ondrop 事件。所以我使用事件冒泡这样做:

$("#dvExchangeNames").on("dropstart", ".drop", function () {

    $(this).addClass("active");

}).on("drop", function (ev, dd) {

    $(this).toggleClass("dropped");

}).on("dropend", function () {

    $(this).removeClass("active");
});

问题在于它会在 dvExchangeNames 中添加、切换和删除类,但我希望通过 实际触发的子 div dropstart 事件来完成。

显然,$(this) 选择了父 div。我试过$(e.target).addClass(),但没有用。我正在使用 THIS jQuery 插件通过拖放获得多选功能。

【问题讨论】:

    标签: jquery drag-and-drop event-bubbling


    【解决方案1】:

    因为这是event delegation 又是.ondropdropend 显然目标#dvExchangeNames 正如你提到的。因此,将所有events 设为event delegation,如下所示:

    $("#dvExchangeNames").on("dropstart", ".drop", function () {
        $(this).addClass("active");
    }).on("drop",".drop", function (ev, dd) {
        //event delegation here
        $(this).toggleClass("dropped");
    }).on("dropend",".drop", function () {
        //event delegation here too
        $(this).removeClass("active");
    });
    

    【讨论】:

    • @Guruprassad Rao:我尝试添加委托事件,但没有成功。能否提供代码示例?
    • @SyedAliTaqi 我可以创建演示,但无法创建演示,因为该插件不能作为 CDN 提供。我尝试复制所有 js,但不幸的是无法复制小提琴中的功能..
    • @Guruprassad Rao:我切换到this 插件并且它工作正常。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2019-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-20
    • 2011-08-23
    相关资源
    最近更新 更多