2009-11-04 79 views
2

我對jQuery比較新,但下面的代碼看起來合乎邏輯,但並不像我期望的那樣工作。我正在使用Colorbox jQuery plugin僅針對特定元素綁定jQuery事件

我的意圖是隻爲'a'元素中的'cbox_closed'事件添加一個偵聽器,該元素的id包含'Remove'。不幸的是,按照目前的實施,這增加了聽衆對'cbox_closed'事件的所有提升。

我是否錯過了某些東西,或者這不是添加事件偵聽器的有效方法?

$('a[id*="Remove"]').bind('cbox_closed', function() { 
    var row = $($.fn.colorbox.element()).parents('tr'); 
    row.fadeOut(1000, function() { 
     row.remove(); 
    }); 
}); 
+1

你沒有做錯任何事情。您看到的問題是由於colorbox僅支持全局觸發「cbox_closed」事件*(即不支持特定元素)。如有疑問,請轉到源代碼:http://colorpowered.com/colorbox/core/colorbox/jquery.colorbox.js(搜索'cboxPublic.close')。你會看到這個:'$ .event.trigger(cbox_closed)'。 – 2009-11-04 20:40:45

+0

@ahsteele:以及我的評論不能解決您的問題,只解決它。你是否試過@fudgey最近的回答? – 2009-11-04 20:58:49

+0

@CrescentFlash我做了,它的竅門是希望在你看到它之前殺死我的評論。我應該刷新X.之前;) – ahsteele 2009-11-04 21:02:55

回答

4

試試這個:

$(document).bind('cbox_closed', function() { 
    if ($($.fn.colorbox.element()).attr('id').match('Remove')){ 
    alert('Remove me!'); 
    } 
}) 

當ColorBox關閉時,該事件將始終觸發。您將不得不修改插件本身,以防止在特定情況下發生此事件。所以,上面的代碼綁定到事件,然後查找您的特定ID。我希望我的解釋有幫助:)

0

難道不該

$("a[id*='Remove']").bind('cbox_closed', function() { 

你似乎缺少圍繞Remove

qoutes還是我誤解你的問題

+0

如果我沒有弄錯,我相信他指的是ID在綁定事件後發生更改並且ID不再包含remove的實例。綁定事件仍然會綁定到他的代碼中的錨。 – 2009-11-04 19:51:18

+0

我沒有引號,但不幸的是沒有任何區別。 :( – ahsteele 2009-11-04 19:57:26