2012-09-05 88 views
0

我有以下jQuery代码。我试图做的是执行if语句来查看$(“#div3”)。slideToggle(“slow”);存在 - 如果是这样,则不执行它。基本上,在页面视图中不同的时间运行代码。因此,如果点击#按钮,在多次点击父级“点击功能”后,#div3会多次切换。我发现了其他解决方法,例如解除绑定元素。但是,由于各种原因,我无法做到这一点或其他解决方法,因为它会影响我的其他代码。在我展示的代码中,还有更多的方法比这个单一的方法更进一步。有没有办法检查$(“#div3”)。slideToggle(“slow”);已经存在于当前页面中?谢谢!检查特定元素是否附有特定的jQuery方法

$('#button').click(function() { 
$("#div3").slideToggle("slow"); 
}); 
+0

好的 - 我想你必须清理你正在做的事,你的代码说的是“如果有人点击按钮,然后滑动它慢慢地”。你想保持开放吗?或者你的意图是什么? – TGlatzer

+0

http://jsfiddle.net/skitols/29LsL/好的 - 这里是一个例子。如果多次单击第一个按钮,然后单击第二个按钮,#div2会多次切换。我只希望它切换一次。我想用IF语句做到这一点,这样我就不必更改我的代码了。谢谢! – Kyle

+0

更具体地说 - 我需要将if语句放在#button2点击函数中 - 因为在我的实际代码中,当点击#button2时,我确实想要发生其他函数。 – Kyle

回答

1

您可以检查是否使用该存在的函数:

$("#div3").slideToggle == null 

尤其是你可以检查,如果事件与约束:

$("#div3").data("events").click == null 

或者你可以添加一个新的property to $('#div3')like:

$("#div3").clickEventHasBeenAdded = true; 
if(!$("#div3").clickEventHasBeenAdded) { 
    //Do something 
} 
+0

嗯。如果我在Firebug中输入这个页面,它会显示“false”。该方法在这里不存在 - 不应该说是真的,因为该函数为空? – Kyle

+0

我用IE10控制台测试它:“$(document).someFunctionWichDoesNotExist == null”,它返回“true” – TGlatzer

+0

啊啊 - 非常感谢!不知道为什么我没有想到添加一个新的属性。所有这些帮助很大。 – Kyle

0

试试这个

HTML

<div> 
    <input type="submit" value="submit" id="button"> 
    <div id="div1">item 1</div> 
    <div id="div2">item 2</div> 
    <div id="div3">item 3</div> 
    <script type="text/javascript"> 
     $('#div3').slideToggle("slow"); 
    </script> 
</div> 

JS代码

$('#button').click(function() { 
    if($('#div3').slideToggle("slow")!=null){ 
     alert('true'); 
    } else{alert('false');} 
}); 

http://jsfiddle.net/e3aHc/3/

+0

@kyle你想要这个吗?如果不是,请通知。 – Codegiant

+0

还在玩 - 我会让你知道的。谢谢! – Kyle

0

使用jQuery的one()方法。

$(document).one('click', '#button', function() { 
    $("#div3").slideToggle("slow"); 
}); 
相关问题