Проблемы с массивом с Jquery - PullRequest
0 голосов
/ 30 марта 2012

У меня есть следующий код 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>

Я хочу иметь возможность сортировать их по разным скрытым полям. Это мои скрытые поля:

@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 ]

1 голос
/ 30 марта 2012

Просто попробуйте это с небольшой модификацией.

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(","));
0 голосов
/ 30 марта 2012

Вы, похоже, используете "td [data-attr-id]: first" в вашем селекторе поиска, но вы "используете data-attri-id" в своем html, обратите внимание на добавленный i.

edit: Вы также можете использовать

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

вместо:

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

см .: Что означает [] в JavaScript?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...