2013-03-12 61 views
4

我需要用jQuery来知道我的页面上的某个元素是否已经切换。jQuery,检测一个元素是否已经切换

我有一个XXX元素的菜单。

当我点击一个元素,我使用:$("#elementXX").slideToggle("slow");(XX是一个数字)

如果我在另一元件上点击,我需要知道,如果一个元素已经切换了,我需要关闭这个元素之前滑动切换我的新元素。

我该怎么做?我不能通过像#element1,#element2,#element3等id这样的id来检查id ...

谢谢!

+1

您可以无条件地''.slideUp()'元素,而无需测试其当前状态。 – 2013-03-12 09:48:51

回答

2

你不需要切换,slideUpslideDown是为您的方案更加适合。您可以简单地执行:

$("#clickedItem").click(function() { 
    var wasVisible = $("#elementXX").is(":visible"); 
    $("[id^=element]:visible").stop().slideUp("slow"); 
    if (!wasVisible) { 
     $("#elementXX").slideDown("slow"); 
    } 
}); 
+0

您可能需要'.stop()。slideUp()',以防元素在前一个事件的动画中被捕获。 – 2013-03-12 10:00:52

+1

@甜菜根 - 甜菜根好喊,补充:) – mattytommo 2013-03-12 10:01:22

+0

是的,但有了这个解决方案,我不能关闭我的元素,当我reclick – 2013-03-12 10:04:21

3

您可以将数据属性设置为某个值以确定是否切换。您可以在HTML中添加属性或直接使用脚本添加。

$("#elementXX").data("toggled", "true"); 
+0

我会建议添加一个数据切换的属性元素,为可搜索性。 – Rodik 2013-03-12 09:48:08