我有一个这样的数组:
["school_name":"My School Name", "school_number":"54546", "note":"", "class":1]
和这样的HTML:
<input type="text" name="school_name" />
<input type="text" name="school_number" />
<textarea name="note" ></textarea>
<select name="class">
<option value="1"> One </option>
<option value="2"> Two </option>
<option value="3"> Three </option>
</select>
我想从其属性名称中获取标记的名称:
$('*[name=school_name]').attr("tag"); // this is input
$('*[name=class]').attr("tag"); // this is select
$('*[name=note]').attr("tag"); // this is textarea
注意我试过这个:
$('*[name=school_name]').attr("tag");
$('*[name=school_name]').prop("tag");
$('*[name=school_name]').get(0).tagName;
$('*[name=school_name]')[0].tagName;
这就是我想要做的事情:
如果标签名称是输入文本,
$("input[name=school_name]").attr("value", "My School Name");
如果标签名称是选择框,
$("select[name=class]").children("option[value=2]").attr("selected", "selected");
答案 0 :(得分:2)
如果我得到你想要的东西,你需要使用filter
$('[name=school_number]').filter("input");
$('[name=class]').filter("select");
$('[name=note]').filter("textarea");
答案 1 :(得分:2)
var schoolProperties = {
"school_name": "My School Name",
"school_number": "54546",
"note": "",
"class": 1
};
for (var property in schoolProperties) {
$('*[name=' + property + ']').attr('value', schoolProperties[property]);
}
这在fiddle中得到了证明。
答案 2 :(得分:1)
从jQuery 1.6开始,你想使用$ xxxxx.prop(“tagName”)
答案 3 :(得分:1)
您可以使用属性.nodeName
来确定元素的标记名称
答案 4 :(得分:1)
你有正确的方法来做到这一点。 Both of these work:
$('*[name=school_name]').get(0).tagName;
$('*[name=school_name]')[0].tagName;
您也可以删除*
,并且可能希望先将tagName
转换为小写,或者至少是一致的情况:
var $el = $('[name=school_name]');
var tagName;
if($el.length)
tagName = $el[0].tagName
if(tagName)
tagName = tagName.toLowerCase();