【问题标题】:.change() on an attribute value? [duplicate].change() 属性值? [复制]
【发布时间】:2013-05-02 18:29:44
【问题描述】:

jQuery 中是否有一个触发器可以检测属性值的变化?

举个例子:

<div id="thisField" value-grabbed='1'></div>

<div id="thisField" value-grabbed='2'></div>

并且 jQuery 会在更改后提示我“完成”。

编辑----

我很可能会使用 .attr() 代码更改属性的值。

【问题讨论】:

  • 你的代码不正确,不要使用一些自定义属性,改用data属性:data-grabbed='1'
  • 你是如何改变这些数据的?
  • @roXon 我不知道这是一个合法的属性。怎么不一样了?我有兴趣知道!
  • @roXon 我会说不正确太强了。该页面在“HTML5 眼中”将是无效的,但它应该呈现得很好。不过,使用data- 属性确实更好。
  • @acdcjunior 是的,它措辞强硬,但我们都应该成为编写良好代码的布道者,并使用技术和联盟为我们提供的技术。这意味着使用自定义“属性”并没有错一旦 DOM 被解析8-D

标签: jquery


【解决方案1】:

是的,但是您必须自己创建所述触发器。

$(element).attr("value-grabbed","2").trigger("attrchange");

您可以通过覆盖属性方法来自动化它:

(function($){ // avoid global conflicts
    var oldfn = $.fn.attr;

    $.fn.attr = function(){    
        var ret = oldfn.apply(this,arguments);
        if (arguments.length === 2 || typeof arguments[0] === "object") {
            this.trigger("attrchange");
        }            
        return ret;
    }
})(jQuery);

【讨论】:

  • 我有一个问题。我怎么能从这个变化中解雇alert();
  • $(element).on("attrchange",function(){ alert("Worky!") });
  • 谢谢!我会弄清楚为什么它不起作用,这可能是我做错了。
猜你喜欢
  • 1970-01-01
  • 2016-11-15
  • 2018-03-06
  • 1970-01-01
  • 2017-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-09
相关资源
最近更新 更多