1

我有一个这样的数组:

["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");
4

5 回答 5

2

如果我得到了你要找的东西,那么你需要使用filter

$('[name=school_number]').filter("input");
$('[name=class]').filter("select");
$('[name=note]').filter("textarea");
于 2012-06-06T23:49:59.380 回答
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]);
}

这在这个小提琴中得到了证明。

于 2012-06-06T23:53:30.397 回答
1

从 jQuery 1.6 开始,您想使用 $xxxxx.prop("tagName")

于 2012-06-06T23:40:54.043 回答
1

您可以使用该属性.nodeName来确定元素的标签名称

于 2012-06-06T23:48:47.823 回答
1

你有正确的方法来做到这一点。这两项工作:

$('*[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();
于 2012-06-06T23:49:29.823 回答