我正在尝试检查元素是否被点击。如果已经点击了元素,请跳过此步骤或者执行此步骤。因为我使用的是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');
'我该怎么做?
答案 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');
调用不会导致该特定事件处理程序再次触发。