var disabled = nodelib.attr(node,"disabled"); nodelib.attr(node,"disabled","");
var disabled = nodelib.prop(node,"disabled"); nodelib.prop(node,"disabled",false);
uDOMlib所提供的工具函数之中,有一部分与元素属性相关,下面列出部分函数的源代码实现以供参考。
获取或设置元素的attribute(HTML标签属性)值。
attr: function(node,name, value) {
if (value === undefined){
if (typeof name === "object"){
for (var attr in name){
this.attr(node,attr,name[atrr]);
}
return this;
} else {
return node[name];
}
} else {
node[name] = value;
return this;
}
}
获取或设置元素给定名称的数据存储的值。
data: function(node,name, value) {
var attrName = 'data-' + name.replace(capitalRE, "-$1").toLowerCase()
if (value === undefined){
var data = this.attr(node,attrName,value);
return data !== null ? deserializeValue(data) : undefined;
} else {
return this.attr(node,attrName,value);
}
}
获取或设置元素的Html内容。 html()内部使用DOM节点的innerHTML属性,适用于任意HTML元素。
html: function(node,html) {
if (html === undefined){
return node.innerHTML;
} else {
this.empty(node);
node.innerHTML = html; //TODO:will be checkd
return this;
}
}
获取或设置元素的property(特性)值。 prop()方法返回的是节点作为一个JavaScript对象所拥有的特性(property)值。 与attr()方法不同,prop()返回的值具有其本来的数据类型,如针对<input type=“checkbox”/>元素调用prop(“checked”),其返回值将是Boolean型的true或false。
prop: function(node,name, value) {
name = propMap[name] || name;
if (value === undefined){
return node[name];
} else {
node[name] = value;
return this;
}
}
removeAttr: function(node,name) {
name.split(' ').forEach(function(attr) {
setAttribute(node, attr);
});
return this;
}
获取或设置元素的文本内容。 .text() 方法不能使用在input元素或scripts元素上。 input 或 textarea 需要使用 .val() 方法获取或设置文本值。得到scripts元素的值,使用.html()方法
text: function(node,text) {
if (text === undefined){
return node.textContent;
} else {
node.textContent = text == null ? '' : '' + text
return this;
}
}
获取或设置元素的当前值。 val()方法主要适用于表单元素,如input, select 和 textarea。 如果select元素设置了multiple属性,.val()返回一个包含每个选择项值的数组
val: function(node,value) {
if (value === undefined){
if (node.multiple) {
// select multiple values
var selectedOptions = this.find(node,"option").filter(function(){
return this.selected
});
return this.pluck(selectedOptions,"value");
} else {
return node.value;
}
} else {
node.value = value;
return this;
}
}