考虑下面的代码:禁用锚/ Safari浏览器
$("a").attr("disabled", "disabled");
在IE和FF,这将使锚无法点击,但在基于WebKit的浏览器(谷歌Chrome和Safari)这个什么也不做。关于disabled属性的好处在于它很容易被删除,并且不会影响href和onclick属性。
你有关于如何得到期望的结果的任何建议。答案必须是:
- 很容易恢复,因为我想在运行AJAX调用时禁用表单输入控件。
- 必须在IE,FF,和WebKit
考虑下面的代码:禁用锚/ Safari浏览器
$("a").attr("disabled", "disabled");
在IE和FF,这将使锚无法点击,但在基于WebKit的浏览器(谷歌Chrome和Safari)这个什么也不做。关于disabled属性的好处在于它很容易被删除,并且不会影响href和onclick属性。
你有关于如何得到期望的结果的任何建议。答案必须是:
工作,我假设你已经绑定到这些锚元素的onclick事件处理程序。只需让您的事件处理程序检查“已禁用”属性,并在已设置的情况下取消该事件。您的事件处理程序看起来像这样:
$("a").click(function(event){
if (this.disabled) {
event.preventDefault();
} else {
// make your AJAX call or whatever else you want
}
});
您还可以设置样式表规则来更改光标。
a[disabled=disabled] { cursor: wait; }
编辑 - 按照评论中的建议简化了“禁用”检查。
我不得不修正了网站上的这个行为有很多锚,正在启用了根据其他条件这个属性/残疾人等也许并不理想,但在那样的情况下,如果你不喜欢单独解决每个锚的代码,这样就可以了所有的主播:
$('a').each(function() {
$(this).click(function (e) {
if ($(this).attr('disabled')) {
e.preventDefault();
e.stopImmediatePropagation();
}
});
var events = $._data ? $._data(this, 'events') : $(this).data('events');
events.click.splice(0, 0, events.click.pop());
});
和:
a[disabled] {
color: gray;
text-decoration: none;
}
功能diableForms(){ $( “输入按钮,文本区域,一”)。 attr(“disabled”,“disabled”)。css(“cursor”,“wait”); (“input”,“button”,textarea,a“)。not(”。disabled“)。removeAttr(”disabled“)。css(”cursor“,”“); } – 2008-10-06 18:22:47
我刚刚粘贴我使用的是disableForms和enableForms功能。感谢您的建议。 – 2008-10-06 18:24:30