Jquery的数组问题

时间:2012-03-30 09:04:01

标签: javascript jquery asp.net-mvc

我有一个以下的Jquery代码:

var selectedQuestions = $("#SelectedQuestions");
var selectedCustomQuestions = $("#SelectedCustomQuestions");
var currentIds = new Array();
var currentText = new Array();

$("#CustomPickedTable td[data-question-id]").each(function () {
    var clickedId = $(this).attr("data-question-id");
    currentIds.push(clickedId);

    $('#CustomPickedTable tr').each(function () {
        var ClickedText= $(this).find("td[data-attr-id]:first").html();
        currentText.push(ClickedText);
    });
});

selectedCustomQuestions.val(currentText.join("|"));
selectedQuestions.val(currentIds.join(","));

$("form").submit();
}

我的表格中有两种类型的TD:

<td data-question-id="7">test</td>

<td data-attr-id="5">test</td>

我希望能够将em分类到不同的隐藏字段中,这些是我的隐藏字段:

@Html.HiddenFor(model => model.SelectedCustomQuestions, new { @id = "SelectedCustomQuestions" }) 
@Html.HiddenFor(model => model.SelectedQuestions, new { @id = "SelectedQuestions" })

我的Jquery代码在使用CurrentIds填充我的数组时起作用但是使用currentText我遇到了问题,如果我的表中有两个<td data-attr-id="5">test</td>它们在我的数组列表中被复制而我的数组长度是7-10这很奇怪。 CurrentText应该只有2个长度而不是。我该如何解决这个问题?

问题示例。

我在表格中有以下内容:

<td data-attr-id="5">aaaa</td>
<td data-attr-id="5">ddd</td>
<td data-question-id="5">test</td>
<td data-question-id="15">test</td>

这是我调试jquery代码时发生的事情

example

提前致谢!

2 个答案:

答案 0 :(得分:1)

只需稍加修改就可以尝试这个。

var selectedQuestions = $("#SelectedQuestions");
    var selectedCustomQuestions = $("#SelectedCustomQuestions");
    var currentIds = new Array();
    var currentText = new Array();

    $("#CustomPickedTable td[data-question-id]").each(function () {
        var clickedId = $(this).attr("data-question-id");
        currentIds.push(clickedId);
    });
    $('#CustomPickedTable td[data-attr-id]').each(function () {
        var ClickedText = $(this).html();
        currentText.push(ClickedText);
    });

    selectedCustomQuestions.val(currentText.join("|"));
    selectedQuestions.val(currentIds.join(","));

答案 1 :(得分:0)

你似乎在你的查找选择器中使用“td [data-attr-id]:first”,但你在html中“使用data-attri-id”,注意添加的i。

编辑: 您可能还想使用

var currentIds = [];
var currentText = [];

而不是:

var currentIds = new Array();
var currentText = new Array();

请参阅: What does [] mean in JavaScript?