如何检查是否在jquery中单击了

时间:2014-02-04 13:20:49

标签: jquery

我正在尝试检查元素是否被点击。如果已经点击了元素,请跳过此步骤或者执行此步骤。因为我使用的是jquery但是我无法理解我该怎么做...

代码:

$('.f').click(function(evt) { 
                    $('#ex4').trigger('click'); 
                                var idx = $(this).attr('id').substr(1); 
                                ipx=$('#b'+idx).offset().left; 
                                ipy=$('#b'+idx).offset().top; 
                                $('#ex4').trigger('click'); 
                                ipx=0; 
                                ipy=0;
                                $(".target").html($($(this).attr('href')).html());
                            });

在此代码中,我想检查是否单击了$('#ex4').trigger('click');?如果已经单击,则跳过此行“$('#ex4').trigger('click');”或者现在执行该行。 '$('#ex4').trigger('click');'我该怎么做?

3 个答案:

答案 0 :(得分:1)

使用不同的东西。 例如:

 $("#ex4").click(function(){
  if($(this).hasClass('clicked_obj'))
  {
    // Is already clicked Do something
   }else{
         $(this).addClass('clicked_obj');
         // is not clicked do somthing
   }
});

答案 1 :(得分:1)

只需将布尔值保持为false,直到单击该元素:

var clicked = false;

$('#ex4').click(function(){
    clicked = true;
})

$('.f').click(function(){
    if(!clicked) $('#ex4').trigger('click');
})

答案 2 :(得分:1)

这实际上完全取决于你需要达到的目标。

最通用的解决方案,使用布尔标志:

var ex4clicked = false;

$('.f').click(function (evt) {
    if(ex4clicked === false) {
        $('#ex4').trigger('click');
        ex4clicked = true;
    }
    var idx = $(this).attr('id').substr(1);
    ipx = $('#b' + idx).offset().left;
    ipy = $('#b' + idx).offset().top;
    $('#ex4').trigger('click');
    ipx = 0;
    ipy = 0;
    $(".target").html($($(this).attr('href')).html());
});

只需点击{em>任意点击.f元素即可;如果你想要点击 .f元素,你需要将标志绑定到每个元素,可能使用数据:

<element class="f" data-clicked="false">some text</element>

$('.f').click(function(e) {
    var ex4clicked = $(this).data('clicked');
    if(ex4clicked === false) {
        $('#ex4').trigger('click');
        $(this).data('clicked', true);
    }
    // rest of your code
});

另一个选择,如果你使用jQuery来绑定#ex4上的click事件处理程序,并且只想每页加载一次,那就是简单地使用一次性事件处理程序:

$('#ex4').one('click', function(e) {
    // some code
});

这将在第一次执行后解除绑定,这意味着后续的$('#ex4').trigger('click');调用不会导致该特定事件处理程序再次触发。