考虑下列代码:

$("a").attr("disabled", "disabled");

在即和FF,这将使锚不可点击,而是在其基于浏览器(谷歌铬和野生动物),这并没有什么。好的事关于残疾人的属性,它是轻易拆除和没有效果的href击和属性。

你有任何建议,关于如何获得所需的结果。答案必须是:

  • 很容易被revertable,因为我想要禁止形式的输入控制,同时我有一个AJAX调运行。
  • 必须努力在即,FF,及。
有帮助吗?

解决方案

我假定你有一个击事件处理程序开这些锚因素。只有您的事件的处理程序检查"残疾人"的属性,并取消的事件,如果它被设定。事件处理程序看起来像这样的东西:

$("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;
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top