2009-09-30 77 views
1

我有一個使用jQuery的$ .ajax檢索數據的燈箱。將點擊事件綁定到jQuery附加鏈接

如果我找回沒有數據,那麼我會追加一個「找不到數據」的消息到我的列表中,以及一個鏈接來重置搜索參數。基本上我試圖添加一個.click()事件到我已經添加的鏈接。

問題是該函數正在立即運行,而不是等待點擊事件。

因此,當我執行此操作時,短暫出現「找不到數據」消息,然後將其替換爲默認結果。

function getImages(/* parameters ... */) { 
    // other code... 
    // if no results: 
    $('div#imageLightBox ul.thumbList').append('<li>Sorry, no images found. <a href="#" id="clearSearchLink">Clear search</a>.</li>'); 
    $('a#clearSearchLink').click(new function() { 
     alert("clearSearchLink"); 
     // code that resets the search parameters ... 
     getImages('', '', $('#lightBoxPageSize').val(), 1); // <-- calls the function that contains this code. 
    }); 
}; 
+0

此外,我嘗試使用.live事件處理程序,而不是在添加鏈接之前對其進行定義 - 發生完全相同的事情,在按鈕被點擊之前執行的代碼。 – Joel 2009-09-30 22:08:20

回答

3

點擊(新功能(){

只是 '功能'

這是一個function expression,不是構造; '新功能()' 與大寫F是明確的constructor version,你通常不希望使用它,因爲它需要和每次調用都會評估一個字符串參數,這非常糟糕(並且速度較慢)。發生了什麼是函數表達式正在創建一個新函數,然後'新'運算符正在用一個新創建的對象調用它作爲this(這實際上是new)。

+0

一個匿名函數表達式? – 2009-09-30 22:16:12

+0

確實。匿名函數表達式在jQuery風格中被代碼使用了很多。 – bobince 2009-09-30 22:17:41

+0

你是對的,我不知道爲什麼我沒有看到!漫長的一天,我猜。謝謝。 – Joel 2009-09-30 23:04:39

相關問題