У меня есть цикл jQuery, который проверяет текущий элемент в цикле на другой список элементов - если есть совпадение, мне нужно очистить значение от текущего элемента в цикле.
$('.subDDL').each(function () {
var $this = $(this);
if ($this.val() == ****second loop id here**** ) {
//Do something
}
else {
//Do something else.
}
})
Чтобы попытаться объяснить немного по-другому, у меня есть таблица с флажком "Включить". Затем у меня есть вспомогательная таблица, которая может включать элемент из основной таблицы, но ТОЛЬКО когда эта опция из основной таблицы включена.
Поэтому, когда я перебираю элементы подкатегории, мне нужно перейти в основную таблицу и проверить включенные опции. Если есть какие-либо вспомогательные значения, которые не включены в основную таблицу, мне нужно установить значение текущего подпункта на "Нет", в основном удалив это значение, которое не разрешено.
Если я правильно вас понял, это то, что вам нужно:
var checkboxes = $(".cbx");
var selects = $('.subDDL');
function sanitizeSelectMenus($el) {
selects.each(function (i, v) {
var $v = $(v);
var current = $v.find(":selected");
var forbidden = !! $el ? $el.parents("td").next() : checkboxes.filter(":not(:checked)").parents("td").next();
$.each(forbidden, function (i, v) {
if (current.text() == $(v).text()) {
current.removeAttr("selected");
$($v.children()[0]).attr("selected", "selected");
}
});
});
}
checkboxes.on("click", function (e) {
var $el = $(e.target);
if ($el.is(":not(:checked)")) {
sanitizeSelectMenus($el);
}
});
selects.on("change", function () {
sanitizeSelectMenus();
});
Вы также можете достичь этого, добавив атрибуты данных в свои флажки и поля выбора, тем самым делая поиск по тексту (который может быть довольно неточным) избыточным. Я решил показать вам пример выше, потому что казалось, что ваш HTML генерируется чем-то, и я не знал, сколько у вас контроля над ним.
for
который также имеет еще один вспомогательный цикл для создания дополнительных строк. Хотя то, как я решил эту проблему, сильно отличалось от вашего ответа, ваш ответ правильный. Спасибо.
Итак, в конце я использовал массив для проверки... Когда я перебирал строки в основной таблице (до того, как я попал в подтаблицу), я создал массив и перебросил каждую строку, не отмеченную в этом массиве. Все, что мне нужно было сделать в моей инструкции if
($.inArray(DsID[0], DsAry) >= 0)
что означает, что если значение sub row появляется в массиве, мне нужно удалить его.
Спасибо всем за помощь.
Я не уверен, поможет ли это, поскольку вопрос немного неясен (мне). Здесь вы можете сделать вложенный цикл для сравнения элементов:
for(var i = 0; i < table1.length; i++) {
for(var j = 0; j < table2.length; j++) {
if(table1Items[i].value == table2Items[j].value) {
alert("Match!");
}
}
}