2011-05-05 97 views
1

嗨我有两个相关的问题,我创建了一个弹出框,点击链接后出现,但你必须点击两次出现,我不知道为什么?jQuery onclick必须点击两次以显示弹出窗口,为什么?

此外,我可以收集被点击的链接的ID,然后从数据库中检索相应的信息,但是如果我点击另一个链接,它仍然显示第一个链接信息。我认为我需要做的是在盒子关闭时清空id变量,但是我已经尝试过大量的东西,我不知道如何做到这一点呢?

任何帮助,将不胜感激的代码如下所示,

<script type="text/javascript"> 
var myCallback = function(caller){ 
    var linkID = caller.id; 
    caller.rel ="gb_page_center[1020, 550]"; 
    caller.href = "species/butterfly.php?linkID="+linkID; 
    var calling = caller.href; 

    $(document).ready (function() { 
     $('.descript').click(function(event) { 
      $('#popup').css('display','block'); 
      $('#popup').empty(); 
      $('#popup').load(calling); 
     }) 
    }); 
} 
</script> 

链接低于:

<span id="11" class="bluebells descript" title="Bluebells (click me)" onclick="myCallback(this);" ></span> 

谢谢!

回答

1

您的第一次点击是实际绑定click()事件,请尝试在您的jQuery click中执行所有操作,并删除您范围内的onclick属性。

$(document).ready(function() { 
    $('.descript').click(function(event) { 
     var linkID = this.id; 
     this.rel = "gb_page_center[1020, 550]"; 
     this.href = "species/butterfly.php?linkID=" + linkID; 
     var calling = this.href; 
     $('#popup').css('display', 'block'); 
     $('#popup').empty(); 
     $('#popup').load(calling); 
    }); 
}); 

<span id="11" class="bluebells descript" title="Bluebells (click me)"></span> 

Example on jsfiddle

+0

三江源与其说这完美的作品,使这么多的意义,我有一种倾向,以在复杂的事你救了我很多时间,谢谢! – 2011-05-05 18:07:09

1

您正在重写函数中的click()事件$('.descript').click(...这会导致事件触发多次(绑定的次数)。

0

在您的回调“myCallback”中,您正在向跨度添加另一个点击事件侦听器。每次连续点击都会导致另一次额外的呼叫。

相关问题