Javascript 在新插件中使用attr()函数?

Javascript 在新插件中使用attr()函数?,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我想知道是否可以在新插件中使用attr()函数: (function ($) { $.fn.resetColor = function() { var oldColor=this.attr("memColor"); this.css('background-color',oldColor); }; })(jQuery); 我已经试过上面的代码,但它不起作用。我确信memColor属性存在,因为我已经用$(文档)中的警报对它进行了测试。read

我想知道是否可以在新插件中使用
attr()
函数:

(function ($) {
     $.fn.resetColor = function() {
        var oldColor=this.attr("memColor");
        this.css('background-color',oldColor);
     };
})(jQuery);
我已经试过上面的代码,但它不起作用。我确信
memColor
属性存在,因为我已经用
$(文档)中的警报对它进行了测试。ready
块。

jQuery插件建议使用以下方法:

(function ($) {
     $.fn.resetColor = function() {
         return this.each(function() {
            var elem = $( this );

            var oldColor = elem.attr("memColor");
            elem.css('background-color',oldColor);
         };
     });
}(jQuery));
  • 假设插件是在一组元素上调用的
  • 获取要使用的jQuery包装元素
  • 还要注意,properties()和attributes()之间存在差异,前者指的是JavaScript DOM上的属性,而后者指的是标记中指定的HTML属性。jQuery也从1.6版开始进行了区分:

    属性和属性之间的差异在应用程序中可能很重要 具体情况。在jQuery1.6之前,有时使用.attr()方法 检索某些属性时考虑了属性值, 这可能会导致不一致的行为。从jQuery1.6开始,.prop() 方法提供了一种显式检索属性值的方法,而 .attr()检索属性


    演示:

    (函数($){
    $.fn.resetColor=函数(){
    返回此值。每个(函数(){
    var elem=$(本);
    var oldColor=elem.attr(“memColor”);
    元素css(“背景色”,oldColor);
    });
    };
    $('.me').resetColor();
    }(jQuery));
    
    
    乱数假文。
    
    Lorem ipsum。
    它不起作用,我在第一个脚本中将oldColor替换为“black”,成功地将块的颜色更改为黑色。问题可能来自使用变量oldColor。您是否对
    this.attr(“memColor”)
    甚至
    this
    进行了调试,以查看您使用的是什么?您还可以创建一个fiddle或其他东西来查看您的具体情况吗?问题是,如果jQuery集合中有多个元素,那么
    this.attr()
    只会从集合中的一个元素中检索
    memColor
    属性,然后这将应用于所有元素。