我需要循环一个表并从中获取值,然后将它们存储在一个数组中。现在这个循环给了我所有的值,但是遇到HTML
<选择>元素它返回选定的选项然后它给了我所有的选择选项。我只想要所选的选项,不整个列表。
通过向您展示,这更容易解释。这是fiddle,这里是jQuery
代码
var saveEdits = [];
$('#save').click(function () {
$('.projects_editable_tbody tr').each(function () {
$('.projects_editable_content_td, option:selected', this).each(function () {
var $input = $("input", this);
if ($input.length) {
saveEdits.push($input.val());
} else saveEdits.push($(this).text());
});
});
$.each(saveEdits, function (index, value) {
console.log(index + ': ' + value);
});
});
正如你从小提琴中看到的那样,数组几乎就像我想要的那样填充几乎。任何帮助表示赞赏。如果您需要更多信息/代码,请告诉我。
答案 0 :(得分:3)
它为你提供了包含select的td中的文本,因为你已经指定了.projects_editable_content_td。您需要排除包含select的.projects_editable_content_td。请参阅我昨天发给您问题的代码。
答案 1 :(得分:1)
也许我误解了这个问题,但我修改了你的代码来推送每个选择的当前选定值,而不是选择本身。我还编辑了选择框的内容以使用“选定”道具。
$('.projects_editable_content_td', this).each(function () {
if(jQuery(this).children().val()) {
saveEdits.push($(this).children().val());
} else {
saveEdits.push(jQuery.trim($(this).text()) );
}
});
你可以在这个jsfiddle中看到
http://jsfiddle.net/amenadiel/WNSBk/29/
编辑第一行并返回正确的数组。第二个原样保持不变,仍有问题。
在您的场景中,如果将每行包含在标记中并使用表单的serialize()方法收集数据可能会更好。为此,您需要将每个字段作为输入。例如,您可以在文本元素旁边放置一个隐藏字段。