我正在尝试使用jQuery来执行类似
的操作if(jQuery('#id').click) {
//do-some-stuff
} else {
//run function2
}
但是我不确定如何使用jQuery做到这一点?任何帮助将不胜感激。
编辑:我正在尝试运行一个函数,如果单击了#id并且特别是没有单击它然后运行函数2?即我需要首先检查在运行function2
之前是否已点击#id?
答案 0 :(得分:29)
您应该避免使用全局变量,并且更喜欢使用.data()
所以,你会这样做:
jQuery('#id').click(function(){
$(this).data('clicked', true);
});
然后,检查是否已点击并执行操作:
if(jQuery('#id').data('clicked')) {
//clicked element, do-some-stuff
} else {
//run function2
}
希望这会有所帮助。干杯
答案 1 :(得分:8)
这样做的方法是使用更高范围的布尔值:
var hasBeenClicked = false;
jQuery('#id').click(function () {
hasBeenClicked = true;
});
if (hasBeenClicked) {
// The link has been clicked.
} else {
// The link has not been clicked.
}
答案 2 :(得分:2)
点击是一个事件;你不能查询一个元素并询问它是否被点击。怎么样:
jQuery('#id').click(function () {
// do some stuff
});
然后,如果你真的想要,你可以使用// run function..
答案 3 :(得分:2)
var flag = 0;
$('#target').click(function() {
flag = 1;
});
if (flag == 1)
{
alert("Clicked");
}
else
{
alert("Not clicked");
}
答案 4 :(得分:0)
这就是您所需要的:http://api.jquery.com/click/
拥有“else”并不适用于这种情况,否则意味着“没有点击”,在这种情况下你就不会做任何事情。
答案 5 :(得分:0)
您实际上可能是指不通过单击来悬停元素,对吧?
jQuery('#id').click(function()
{
// execute on click
}).hover(function()
{
// execute on hover
});
澄清您的问题,然后我们就能更好地理解。
如果没有点击某个元素,请执行setInterval
继续此过程,直到点击为止。
var checkClick = setInterval(function()
{
// do something when the element hasn't been clicked yet
}, 2000); // every 2 seconds
jQuery('#id').click(function()
{
clearInterval(checkClick); // this is optional, but it will
// clear the interval once the element
// has been clicked on
// do something else
})
答案 6 :(得分:0)
也许你正在寻找这样的东西:
$(document).click(function(e)
{
if($(e.srcElement).attr('id')=='id')
{
alert('click on #id');
}
else
{
alert('click on something else');
}
});
<强> jsfiddle 强>
您可以使用event.srcElement
检索指向所点击元素的指针。
所以你要做的就是检查点击元素的id属性。
答案 7 :(得分:0)
如果按x,则x的次数将使复选框除以y,这将导致jquery boxcheck,这将是做这种事情的无效方法。希望您在使用.on()函数之前先了解一下