检查特定元素是否附加了特定的jquery方法

时间:2012-09-05 13:16:21

标签: jquery slidetoggle

我有以下jQuery代码。我要做的是执行一个if语句来查看 $(“#div3”)。slideToggle(“slow”); 是否存在 - 如果是,则不执行它。基本上,在此页面视图中,与此相关的代码会在不同时间运行。因此,如果单击#button,在多次单击父“click function”之后,#div3将多次切换。我找到了其他解决方法,例如取消绑定元素。但是,由于各种原因,我无法做到这一点或其他变通办法,因为它会影响我的其他代码。在我展示的代码中,还有比这一个更多的方法。有没有办法检查 $(“#div3”)。slideToggle(“slow”); 是否已存在于当前页面中?谢谢!

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

3 个答案:

答案 0 :(得分:1)

您可以使用以下方法检查功能是否存在:

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

特别是你可以检查一个事件是否与...绑定:

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

或者你可以像这样添加一个新属性到$('#div3'):

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

答案 1 :(得分: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 CODE

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

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

答案 2 :(得分:0)

使用jQuery的one()方法。

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