2011-05-05 92 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」中,您正在向跨度添加另一個點擊事件偵聽器。每次連續點擊都會導致另一次額外的呼叫。

相關問題