我有10个html元素。我需要来自8的值属性和来自2个元素的类,并将它们全部放到一个数组中。 Id是关键。
如何用JS或jQuery解决这个问题?
我从.each()
开始,但我发现我不能在该循环中使用异常 - 它会对所有元素进行更改。
var myArray = {};
$( '.need-values, .need-classes' ).each( function () {
myArray[this.id] = $( this ).val();
});
我知道我可以使用2个.each()
循环并将值组合到一个数组中,但事实上有些是复选框 - 我需要在循环中使用if
语句。
答案 0 :(得分:2)
在你的循环中,执行此操作
myArray[this.id] = $(this).is('need-values') ? $(this).val() : $(this).attr('class');
如果元素具有need-values
类,它将获得值,否则,它将获得类。当然,您可以根据自己的需要选择不同的情况和其他
var myArray = {};
$('.need-values, .need-classes').each(function() {
myArray[this.id] = $(this).hasClass('need-values') ? $(this).val() : $(this).attr('class');
});
console.log(myArray);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="a" type="checkbox" class="need-values" value="a">
<input id="b" type="checkbox" class="need-values" value="b">
<input id="c" type="checkbox" class="need-values" value="c">
<input id="d" type="checkbox" class="need-classes d" value="d">
<input id="e" type="checkbox" class="need-classes e" value="e">
<input id="f" type="checkbox" class="need-classes f" value="f">
答案 1 :(得分:0)
Query为此提供.map():
Room_Detail
.map()遍历其元素,在每个元素上调用一个函数,并在返回的新数组中记录函数的返回值。 您可以找到文档here。
或者你可以用你的方式解决它.each():
var items = $('#main p').map(function () { return $(this).text(); }).get();
或者,如果你想要更多选项,那么另一种方式就是多选择器。您可以找到有关here的文档。
如果你想要一个数组中的元素。例如:
而不是:
var items = [];
$('#main p').each(function (i, e) {
items.push($(e).text());
});
有这个:
<div id="main">
<p>Text1</p>
<p>Text2</p>
<p>Text3</p>
</div>
答案 2 :(得分:0)
首先为所有10个元素提供一个共同的class
(例如common-class
)。
var array=[];
$(".common-class").each(function(){
if(this.tagName=="DIV"){
array.push($(this).attr("value"));
}
if(this.tagName=="INPUT" && $(this).attr("type")=="checkbox"){
array.push($(this).attr("class"));
}
..................and so one
})