我使用beautytips插件创建了一个javascript工具,该插件使用beautytips显示列表选项菜单,然后我将动作绑定到。
我从一个简单的div开始定义菜单项
<div id="menu-div">
<a href="javascript:;" id="link-one">text link one</a><br />
<a href="javascript:;" id="link-two">text link two</a><br />
<a href="javascript:;" id="link-three">text link three</a><br />
</div>
然后使用以下代码实例化美容小贴士:
$("#menu-toggle").bt({
contentSelector: "$('#menu-div').html()",
preShow: function(box) {
$("a[id^=link-]").click(function() {
//do something
});
});
我添加了'preShow'功能,因为出于某种原因,直到div启用后才找到“link-”id ..(?)。这在firefox,safari和chrome中完美地工作,我可以单击菜单切换,查看三个链接,单击链接一个,并发生链接一的正确操作,等等。
这也适用于Internet Explorer,但仅限第一次使用。第二次通过(单击以显示菜单,单击另一个链接),Internet Explorer似乎无法找到相同的ID。
关闭菜单后,是否必须取消绑定功能?
这里是美容技巧如何处理preShow功能:
// trigger preShow function
// function receives the box element (the balloon wrapper div) as an argument
opts.preShow.apply(this, [$box[0]]);
答案 0 :(得分:0)
此代码看起来缺少大括号
$("#menu-toggle").bt({
contentSelector: "$('#menu-div').html()",
preShow: function(box) {
$("a[id^=link-]").click(function() {
//do something
});
} // this curly brace was missing
});
答案 1 :(得分:0)
感谢大家的建议 - 我想在回过头来回答我的问题之后我已经解决了这个问题,并且意识到我只需要找到一种解除事件处理程序的方法,每次都可以在Internet Explorer中使用它。 BeautyTips有一个后隐藏回调,完美适用于此,所以我应用了以下代码:
postHide: function(box) {
$("a[id^=link-]").unbind();
},
这在所有浏览器中都按预期工作。任何人都知道一个很好的资源来理解为什么事件处理在Internet Explorer中会如此不同?