我使用以下代码:
$('#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中获取的示例:使用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()
}
});
但是我收到了这个错误:
TypeError:e未定义
为什么?
解
最后,经过测试后,我通过Joe的所有解决方案,这是结果(随意提出任何建议)
$('#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;
});
答案 0 :(得分:2)
你可以试试这个:
$('#product-create-step-2 input, #product-create-step-2 img').each(function() {
var myVar = this.value || this.src;
});
注意:src
是某些输入类型的有效属性,因此只有在您的输入都没有设置该属性时,此属性才有效。否则,这将完美地工作,因为img
没有value
属性,并且(大多数)输入没有src
。
如果您的某些输入 具有src
属性,请查看Logan的答案。
答案 1 :(得分:0)
喜欢这样
$('#product-create-step-2 input, #product-create-step-2 img').each(function(e) {
e = $(this);
if(e.is("input")) {
console.log(e.val());
} else if(e.is("img")) {
cosole.log(e.attr("src"));
}
});
答案 2 :(得分:0)
您可以使用typeof(N)来获取实际的对象类型。
要获取元素标记名称,请使用elem.tagName或elem.nodeName。
答案 3 :(得分:0)
试试这个
$('#product-create-step-2 input, #product-create-step-2 img').each(function(i) {
var thisElem = $(this);
if(thisElem.is("input")) {
//get its val
} else if(thisElem.is("img")) {
//gets its src
}
});
答案 4 :(得分:0)
尝试以下代码
$('#product-create-step-2 input, #product-create-step-2 img').each(function() {
var isImage= $(this)..get(0).tagName == "IMAGE";
var isInput = $(this)..get(0).tagName == "INPUT";
if (isImage) {
var requiredval = $(this).attr('src');
} else if (isInput ) {
var requiredval = $(this).val();
}
});