我有一个javascript:
<script src="http://ajax.microsoft.com/ajax/jquery/jquery-1.4.2.min.js" type="text/javascript"></script>
<script type="text/javascript">
var Delay = 10;//Seconds after them clicking the link, the gateway vanishes.
function setupgateway()
{
var Left = $(window).width() /2;
Left = Left - $('#gatewaydiv').width()/2;
var Top = $(window).height() /2;
Top = Top - $('#gatewaydiv').height()/2;
$('#gatewaydiv').css('top', Top+'px').css('left', Left+'px').css('display', 'inline');
$('#gatewayDimmer').width($('html').width());
$('#gatewayDimmer').height($('html').height());
$('#gatewayDimmer').css({display:'block', position:'fixed'});
}
function removegateway()
{
$('#gatewaydiv').css('display', 'none');
$('#gatewayDimmer').css('display','none');
}
$(document).ready(function()
{
$('.my-link').click(function(e){
e.preventDefault();
$('.offerlink').click(function()
{
setTimeout('removegateway()', Delay*10);
});
setupgateway();
});
});
</script
...弹出窗口,如果你愿意的话,通过点击一个图像来调用/触发,然后在点击弹出窗口中的链接x秒后消失。我需要将图像(呼叫者/触发器)转到它(它们)链接到的位置再次点击,而不是调用javascript。第一次点击后我该怎么做才能禁用javascript?
答案 0 :(得分:3)
使用.one()
代替.click()
:
$('.my-link').one('click', function(e){
e.preventDefault();
$('.offerlink').click(function()
{
setTimeout(removegateway, Delay*10);
});
setupgateway();
});
.one()
与.click()
类似,但只运行一次,然后解除绑定。
答案 1 :(得分:0)
将用于绑定点击的代码放入函数中,以便您可以重复使用它。在显示网关时解除绑定,并在删除网关时重新绑定它。
注意:setTimeout
的时间单位是毫秒,因此Delay*10
会给你0.1秒,而不是10秒。
function bindLink() {
$('.my-link').click(function(e){
e.preventDefault();
$('.offerlink').click(function() {
window.setTimeout(function() {
removegateway();
bindLink();
}, Delay * 1000);
});
setupgateway();
$('.my-link').unbind('click');
});
}
$(document).ready(function() {
bindLink();
});