我正在使用以下代码:
$('#product-create-step-2 input, #product-create-step-2 img').each(function() {
// I should check here if element is input or img
// If element is input I should get $(this).val()
// If element is img I should get $(this).attr('src')
var type = $(this).attr("type");
if ((type == "checkbox" || type == "radio") && $(this).is(":checked")) {
inputValues[$(this).attr('id')] = $(this).val();
} else if (type != "button" || type != "submit") {
inputValues[$(this).attr('id')] = $(this).val();
}
});
如何检查我拥有哪种类型的 DOM 元素以获得正确的值?
我知道 jQuery 中有一个函数 :is() 但示例取自 SO:Finding the type of an element using jQuery 是针对一个元素而不是针对一个列表。
更新
这是我正在处理的代码:
var inputValues = [];
$('#product-create-step-2 input, #product-create-step-2 img').each(function(i, e) {
e = $(e);
if (e.is("input")) {
var type = $(this).attr("type");
if ((type == "checkbox" || type == "radio") && $(this).is(":checked")) {
inputValues[$(this).attr('id')] = $(this).val();
}
else if (type != "button" || type != "submit") {
inputValues[$(this).attr('id')] = $(this).val();
}
} else if (e.is("img")) {
inputValues[$(this).attr('id')] = $(this).attr()
}
});
但我收到了这个错误:
类型错误:e 未定义
为什么?
解决方案
最后,在测试了我通过乔的所有解决方案之后,结果如下(请随时提出任何建议)
$('#product-create-step-2 input, #product-create-step-2 img').each(function(i, e) {
var that = $(this);
var thatis = this.src || this.value;
inputValues[that.attr('id')] = thatis;
});