Javascript .getAttribute()有效但.attr()却没有

时间:2014-12-11 20:35:26

标签: javascript jquery

尝试理解为什么.getAttribute(" id")可以获取值,但.attr(" id")不能。

我编写了一个Jquery插件函数,并尝试从使用插件函数的函数中获取选择器或id。

在我的HTML中,插件函数调用是 -

<script>
$(document).ready(function() {

    var langObj = {"lang" : "en"};
    var curMap = {"testMap" : "tttt"};

    $("#test_id").testProduct({
        'error_msg'                     : 'ERROR NOT LOAD.'
    }).load(langObj, curMap);
});
</script>

在我的JQuery插件函数中 -

(function($){

    var pluginName = "testProduct",
        defaults = {};

    $.test.testProduct = function(element, options) {
        this.apiLoadType = {
            'ERROR'         : 'error'
        }

        this.options                = $.extend({}, defaults, options);
        this.element                = element;


        return this;
    };

    $.test.testProduct.prototype = {
        _load: function(langObj, curMap) {
            console.log(this);                             //Chrome console log #1
            console.log(this.element)                      //Chrome console log #2
            this.element.getAttribute("id");  //show the id
            this.element.attr("id");          //not show the id
        },

        //PUBLIC
        load: function(langObj, curMap) {
            var self = this;            
            this._load(langObj, curMap);       
            return this;
        }
    }

    $.fn[pluginName]= function(options) {
        var el = null;
        this.each(function () {
            el = new $.test[pluginName]( this, options );
        });
        return el;
    };
})(jQuery);

Chrome控制台日志#1 -

$.testFn.testProduct {apiLoadType: Object, options: Object, element: div#test_id.test_id2, errorElement: null}

  apiLoadType: Object
  element: div#test_id.test_id2
  accessKey: ""
  align: ""
  baseURI: null
  attributes: NamedNodeMap
      0: id
      ...

  className:"test_id2"
  id:"test_id"
  outerHTML: "<div id="test_id" class="test_id2"></div>"
  outerText: ""
  ...
  options: Object
  __proto__: Object

Chrome控制台日志#2 -

<div id="test_id" class="test_id2"></div>

为什么this.element.getAttribute(&#34; id&#34;);可以显示元素ID吗?我应该使用哪种Jquery方法从我的元素中获取选择器或元素id?

2 个答案:

答案 0 :(得分:3)

this.element是一个本机DOM元素,可以通过JavaScript访问,而不是jQuery,因此.attr() jQuery函数不能用于它。

尝试......

$(this.element).attr("id");

答案 1 :(得分:-3)

在javascript中你可以这样做

如果你知道元素的id,你可以document.getElementById("id").setAttribute("attribute", "state/value attribute")

如果您希望删除属性

document.getElementById("id").removeAttribute("attribute");