下面,我试图遍历输入元素中的每个属性。它不起作用,我不知道为什么。这是对名为input的对象的错误使用吗?我该如何改变?
<script>
$('form.trade').submit(function(e) {
e.preventDefault();
input=$(this).find(':input:first');
value='';
$.each(input.attributes, function(i, attrib){
if (attrib.name!='type'){
value +=attrib.name + ":" + attrib.value + ";";
}
});
});
</script>
<form class="trade" id="24243">
<input type="hidden" available="4" pid="24243" cardname="something" yay="blah">
Available: <p class="available">4</p>
<input type="submit" value="add card">
</form>
<br/>
<form class="trade" id="24245">
<input type="hidden" available="7" pid="24243" cardname="somethik" yay="blakk">
Available: <p class="available">7</p>
<input type="submit" value="add card">
</form>
答案 0 :(得分:1)
输入数组上的“属性”没有意义。
$.each(input.attributes
$(this).find(':input')
的结果返回项的jQuery选择(数组)。
您是否尝试迭代输入属性? $.each(input[i].attributes
是您要做的事情,其中i
是input
集合中的迭代器。
〜这就是你想要做的事情:
<script>
$('form.trade').submit(function(e) {
e.preventDefault();
var $inputs=$(this).find(':input:first');
var value='';
$inputs.each(function(i,input){
$.each(input.attributes, function(j,attrib){
if (attrib.name!=='type'){
value +=attrib.name + ":" + attrib.value + ";";
}
});
});
console.log(value); // what do you want to do with value??
});
</script>
答案 1 :(得分:0)
我想我必须先完成输入。我不知道为什么,但它很容易解决。
value='';
input.each(function(){
$.each(this.attributes, function(i, attrib){
if (attrib.name!='type'){
value +=attrib.name + ":" + attrib.value + ";";
}
});
});
答案 2 :(得分:0)
您可以使用普通的javascript:
var elem = document.getElementById('testElement');
for (var i = 0; i < elem.attributes.length; i++) {
var att = elem.attributes[i];
if (att.specified == true) {
console.log(att.name + " " + att.value);
}
}