尝试理解为什么.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?
答案 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");