我希望遍历一个表单,将每个元素添加到一个区域。问题是其中的一些元素是选择、输入和文本框。我知道我可以使用:input来解决这里的问题(不过,我真的不需要这样做)。问题是我很难确定如何判断元素是否是文本区域、输入、选择等。我需要正确地这样做,因为据我所知,jQuery("input#someinput").val()对于输入非常有效,但是对于文本区域,我可能需要jQuery("textarea#sometexarea").text()。我不确定这是否存在..。
不管怎样,到目前为止我的函数如下:
function getAllFormElements(id) {
var elements = new Array();
jQuery(id).children().map(function(){
for (var index = 0; index < children.length; index++) {
elements[i] = jQuery(children[i]).val();
}
})
return elements;
}发布于 2011-11-29 02:44:27
val()与<input>、<select>和<textarea>元素一起工作得同样好。
如果您仍然希望确定:input选择器匹配的元素的实际类型,则可以结合使用is()和element selectors
$(":input").each(function() {
var $this = $(this);
if ($this.is("input")) {
// <input> element.
} else if ($this.is("select")) {
// <select> element.
} else if ($this.is("textarea")) {
// <textarea> element.
}
});发布于 2011-11-29 02:42:42
您应该能够使用jQuery的.is()函数--只需将选择器传递给.is(),如果元素与选择器匹配,它将返回true。因此,要查看您是否有一个文本区域,您只需检查:
if($(this).is("textarea")) { doStuff(); }发布于 2011-11-29 02:46:01
看看nodeName属性。
jQuery(id).children().map(function(){
console.log( children[i].nodeName.toLowerCase() );
});您可以但不一定要使用jQuery中的is方法(这里是开销)。
https://stackoverflow.com/questions/8300584
复制相似问题