我想将一个函数绑定到特定facebox的关闭?根据{{3}}的有限文档,您可以执行类似这样的操作来绑定操作。
$(document).bind('close.facebox', function() {
//do stuff...
})
但问题是它会将相同的动作绑定到页面上创建的所有facebox。
那么如何将不同的功能绑定到不同的facebox?我尝试了一些变种没有成功(可能是因为我还没有javascript和jQuery的masterlevelskills):
在创建时获取facebox的句柄并使用它来绑定操作:
var fb = $.facebox('foo');
fb.bind('close.facebox', function() { ...do stuff ...})
直接在facebox上调用绑定,如:
$.facebox('foo').bind('close.facebox', function() { ...do stuff ...})
可能更多我不记得的变种......
请帮助我理解我应该怎么做(或者为什么我不应该这样做)。
答案 0 :(得分:1)
在快速查看源代码后,我可以想到一个hack(!)来完成这项工作:
facebox#close
方法。以下是一个例子:
HTML:
<a href="#foo" class="facebox">Foo</a>
<a href="#bar" class="facebox">Bar</a>
<div id="foo">
<div data-close="foo">Foo</div>
</div>
<div id="bar">
<div data-close="bar">Bar</div>
</div>
JS:
$.facebox.close = function(e) {
var type = $(this).prev().find('div:first').data("close");
switch (type) {
case "foo":
alert("FOO");
break;
case "bar":
alert("BAR");
break;
}
$(document).trigger('close.facebox');
return false
};
$('a.facebox').facebox();
在此处尝试:http://jsfiddle.net/SU3se/。
我认为该插件假设您不会在多个“不同”对象上使用它,并且因为您有时只能打开一个facebox,所以“应该”不是问题。但我可以理解为什么有人可能想要这样做。
请记住,我的解决方案是一个黑客,真的不是很漂亮。也许其他人可以想到更好的东西。