2009-11-04 62 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