【问题标题】:jquery attr('disabled', 'disabled') isn't fully working in IE (doesn't disable click but looks disabled)jquery attr('disabled', 'disabled') 在 IE 中没有完全工作(不禁用点击但看起来已禁用)
【发布时间】:2012-04-26 21:32:07
【问题描述】:

我在使用 jQuery 1.7.1 的 Internet Explorer 中遇到 attr('disabled', 'disabled') 问题。这些按钮显示为禁用,但如果单击它们,它们仍会执行。在 firefox、safari 和 chrome 中,它的行为符合预期(什么都不做,阻止点击)。有任何想法吗?

    disableWizardButtons: function() {
        jQuery(this.wizardButtonSelector).filter(this.enabledSelector).each(function() {
            var button = jQuery(this);
            button.data().originalClass = button.attr('class');
            button.removeClass().addClass('btn-secondary-disabled');
            button.attr('disabled', 'disabled');
            button.prop("onclick", null);
        });
    }

【问题讨论】:

  • 你知道你只需要写一次长格式的jQuery吗?通过将代码包装在(function($) { .... })(jQuery); 中,无论noConflict 是否已使用,您都可以使用$。你应该使用.prop('disabled', true) 来禁用一个元素。除此之外,在禁用的元素上,通常根本不会触发任何事件。您也不应该尝试通过清除 onclick 属性来取消绑定事件。如果您使用 jQuery 绑定它们,请使用 .unbind('click') 取消绑定它们。

标签: jquery internet-explorer jquery-1.7


【解决方案1】:

通常你可以使用

button.disabled = true;

但是既然你得到了 jQuery obj 试试

this.disabled = true;

【讨论】:

  • 第一个代码不适用于 jQuery 对象。但是.prop('disabled', true) 会。但无论如何,他的代码应该可以工作。或this.disabled = true;
  • 是的,我刚刚添加了this,因为他已经包装好了。当我看到库抽象的 js 中如此简单的事情时,我只是感到沮丧..
【解决方案2】:

通过盗贼大师:

你知道你只需要写一次长格式的 jQuery 吗?通过包装你的 (function($) { .... })(jQuery); 中的代码,无论 noConflict 是否存在,都可以使用 $ 使用与否。你应该使用 .prop('disabled', true) 来禁用一个元素。除了 也就是说,在禁用的元素上,通常根本不会触发任何事件。你也不应该 尝试通过清除 onclick 属性来取消绑定事件。如果你使用 jQuery 绑定它们, 使用 .unbind('click') 解除绑定。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-28
    • 1970-01-01
    • 1970-01-01
    • 2016-09-12
    • 1970-01-01
    • 2011-11-14
    • 1970-01-01
    • 2013-11-07
    相关资源
    最近更新 更多