Jquery 防止所有slideUp函数仅在一个元素上触发

Jquery 防止所有slideUp函数仅在一个元素上触发,jquery,events,element,slideup,document-ready,Jquery,Events,Element,Slideup,Document Ready,我创建了一个下拉菜单,但该菜单的设计使其可以在没有任何HTML知识的情况下轻松更改。因此,导航选项卡和下拉菜单不在同一元素内 此外,所有导航选项卡都是单独的元素(因此可以在不了解HTML的情况下编辑、删除或创建页面),因此调用每个元素的步骤如下: 导航选项卡包括: #PageList1 ul li:first-child, #PageList1 ul li:first-child + li #PageList1 ul li:first-child + li + li 等 下拉菜单包括: #La

我创建了一个下拉菜单,但该菜单的设计使其可以在没有任何HTML知识的情况下轻松更改。因此,导航选项卡和下拉菜单不在同一元素内

此外,所有导航选项卡都是单独的元素(因此可以在不了解HTML的情况下编辑、删除或创建页面),因此调用每个元素的步骤如下:

导航选项卡包括:

#PageList1 ul li:first-child,
#PageList1 ul li:first-child + li
#PageList1 ul li:first-child + li + li

下拉菜单包括:

#Label1
#Label2
#Label3

因此,当#PageList1 ul li:first child悬停时,会触发#Label1向下滑动。 等

为了在没有任何下拉菜单(#标签)处于打开状态的情况下工作,当鼠标悬停在某些区域时,我必须在#标签1(以及所有其他#标签id)上放置slideUp事件:#main、#header或其他#标签

现在,我正在使用条件标记处理某个页面,需要从某个下拉菜单(#Label1)中删除所有slideUp事件

有办法吗

由于slideUp事件不是绑定的一部分,因此我不能使用解除绑定、分离或删除所有slideUp事件

我试图让这样的东西发挥作用(但没有运气):

()

()

为了避免这个问题,我尝试克隆#Label1并附加到一个新的div,希望它能删除所有附加到#Label1的触发事件,但没有

HTML:


等等。

我不完全理解你对整件事的态度,但也许以下几点会有所帮助:

更改调用
.slideUp()
的代码,使其仅在没有特定类的元素上调用,例如
“noSlideUp”
,然后根据需要将该类添加到元素中。因此,您的
mouseleave
处理程序如下所示:

$("#Label2").mouseleave(function(){
    $("#Label1").not(".noSlideUp").slideUp(130);
});
…然后在其他地方,当您想防止在
“#Label1”
上滑动时,您可以执行以下操作:

$("#Label1").addClass("noSlideUp");
…如果以后要在该元素上重新启用
slideUp
,请再次删除该类:

$("#Label1").removeClass("noSlideUp");

这个概念有点笨拙,因为你必须在调用
.slideUp()
的所有地方都包含
。而不是(“.noSlideUp”)
,但是它可以做你想做的事情。

如果不看相关的HTML和代码,很难说出你在说什么。因为没有附加任何内容,所以很难给出HTML代码。这都是独立的元素。但我会编辑,看看我可以添加什么HTML-wise。不知道你说的“什么都没有被攻击”是什么意思。您正在尝试编写网页,请显示您所编写的内容。“由于slideUp事件不是绑定的一部分,我不能使用unbind。”-不,但您可以
.unbind()
(或
.off()
)调用
.slideUp()
mouseleave
事件。我希望这能有所帮助。任何其他问题,请不要犹豫。如果我理解正确的话,那就需要在…周围包装一个div类。。。。?我不能在小部件周围包装div,它会崩溃。不,不需要额外的包装元素-为什么会有?哦,我现在看起来像是这样。我又读了一遍。我会试试这个,然后再打给你,谢谢。它成功了!非常感谢你。如果没有你的帮助,我以前从来没有这样做过,所以我从来没有想过要这么做。今天我学到了一些有价值的东西。再次感谢你!
$("#Label2").mouseleave(function(){
    $("#Label1").not(".noSlideUp").slideUp(130);
});
$("#Label1").addClass("noSlideUp");
$("#Label1").removeClass("noSlideUp");