Javascript JQuery-似乎无法将事件绑定到动态DOM元素

Javascript JQuery-似乎无法将事件绑定到动态DOM元素,javascript,jquery,html,jquery-ui,dom,Javascript,Jquery,Html,Jquery Ui,Dom,使用jQueryUIDragable,我正在克隆元素,因为它们会留下一个无序的列表。由于这些是DOM的新特性,我尝试使用JQuery On()方法绑定一个事件,该事件将显示一个隐藏链接。取消类的锚点有显示:无 HTML <ul class="current-campaign"> <li class="draggable">One <a class="pull-right cancel" href="#"> <i style="

使用jQueryUIDragable,我正在克隆元素,因为它们会留下一个无序的列表。由于这些是DOM的新特性,我尝试使用JQuery On()方法绑定一个事件,该事件将显示一个隐藏链接。取消类的锚点有
显示:无

HTML

<ul class="current-campaign">
    <li class="draggable">One <a class="pull-right cancel" href="#">
          <i style="color:red">Icon</i>
        </a>

    </li>
</ul>
<ul class="new-campaign sortable"></ul>
真的很难弄清楚为什么链接离开无序列表时不显示。这里有一个JS提琴,可以看到它的作用

带答案的最终编辑 掌握了如何使用on()函数的知识后,我对代码进行了调整,使其按预期工作

$(document).on("mouseover", ".new-campaign", function (e) {
    console.error($(this));
    $(".new-campaign").find('.cancel').show();
});

您正在将一个事件附加到
。取消
,它根本不在视图中:

$(".current-campaign").on("mouseout", ".cancel", function () {
    $(".cancel").show();
});
.cancel
没有区域时,你怎么能
鼠标出
?将其替换为
.draggable

$(".current-campaign").on("mouseout", ".draggable", function () {
    $(".cancel").show();
});
我猜你是在寻找一旦你停下来就会显示的取消,当你离开时,它应该隐藏起来。因此,请将代码更改为:

$(".current-campaign, .new-campaign").on("mouseout", ".draggable", function () {
    $(".cancel").hide();
}).on("mouseover", ".draggable", function () {
    $(".cancel").show();
});
我还想说这不是一个正确的方法,因为它会影响所有的
。取消
。因此,您可能需要使用
$(this).find()

小提琴:

但是,一切都可以使用CSS本身完成

您只需添加此CSS,而不是整个JS:

.sortable:hover .cancel {
    display: inline;
}

Fiddle:

您正在将事件附加到
。取消
,它根本不在视图中:

$(".current-campaign").on("mouseout", ".cancel", function () {
    $(".cancel").show();
});
.cancel
没有区域时,你怎么能
鼠标出
?将其替换为
.draggable

$(".current-campaign").on("mouseout", ".draggable", function () {
    $(".cancel").show();
});
我猜你是在寻找一旦你停下来就会显示的取消,当你离开时,它应该隐藏起来。因此,请将代码更改为:

$(".current-campaign, .new-campaign").on("mouseout", ".draggable", function () {
    $(".cancel").hide();
}).on("mouseover", ".draggable", function () {
    $(".cancel").show();
});
我还想说这不是一个正确的方法,因为它会影响所有的
。取消
。因此,您可能需要使用
$(this).find()

小提琴:

但是,一切都可以使用CSS本身完成

您只需添加此CSS,而不是整个JS:

.sortable:hover .cancel {
    display: inline;
}

小提琴:

嗨,看看我的答案。如果对您有效,请单击
按钮旁边的我的答案,接受它作为一种方式向我表示感谢<代码>:)
嗨,看看我的答案。如果对您有效,请单击
按钮旁边的我的答案,接受它作为一种方式向我表示感谢<代码>:)
谢谢你的好帖!您帮助我了解了如何错误地使用on()函数。但是你误解了我的目标,所以你文章的后半部分不适用。不过,我已经用我的最终代码更新了我的问题。再次感谢!谢谢你的好帖子!您帮助我了解了如何错误地使用on()函数。但是你误解了我的目标,所以你文章的后半部分不适用。不过,我已经用我的最终代码更新了我的问题。再次感谢!