在调用ajax资源时,我经常使用href='#'
的链接。
我注意到IE在点击这些链接时会发出“点击”声。
这是一种解决方法:
$("#element")
.click(function(){return false;})
.bind("click", function(){ alert(this); });
但是,当我尝试将此功能封装在jQuery插件中时,我没有成功返回“clicked”元素。
例如,如果我使用上面的方法,我将获得被点击的实际A元素。
但如果我写一个这样的插件:
(function($){
$.fn.clickless = function(fnCallback) {
return this
.click(function(){return false;})
.bind("click", function(){
fnCallback.call();
});
}
})(jQuery);
然后致电
$("#element").clickless(function(){
alert(this);
});
我会得到Window
对象,当我试图找到实际的A标签时,它没有用。
也许我只是错误地编写插件 - 任何想法?
非常感谢,
迈克尔
答案 0 :(得分:2)
终于搞定了 -
//jQuery.clickless.js
(function($){
$.fn.clickless = function(fnCallback) {
return this
.click(function(){return false;})
.bind("click", function(){
fnCallback.apply(this);
});
}}
)(jQuery);
修改:
感谢cobbal和朱利安(达摩倡议) - 非常感谢。
答案 1 :(得分:1)
试试这个:
(function($){
$.fn.clickless = function(fnCallback) {
$.each(this, function() {
var element = $(this);
element.click(function(){return false;})
.bind("click", function(){
fnCallback();
});
});
return this;
}
})(jQuery);
答案 2 :(得分:0)
为什么不直接使用:
.bind("click", fnCallback);
因为this
已正确设置。
修改:此版本确实有效:
.bind("click", function(){
fnCallback.apply(this);
});
在jQuery的each()
内找到了它的用途
更多编辑
在查看apply()
和call()
的不同之处时,这可能是更正确的方法。
.bind("click", function(){
fnCallback.call(this);
});
答案 3 :(得分:-4)
或者,您需要告知用户如何进入控制面板,声音以及关闭开始/结束导航的声音。
我个人讨厌这些点击声,所以这是我在Windows安装时关闭的第一件事。