#realJSOP Ответов: 1

Jquery удалить элемент из выпадающего списка


В нашем жерехе.Net application (*NOT* MVC), у нас есть выпадающий список Kendo-UI, который заполняется в файле Default.master. Сам элемент управления заполняется во внешней "глобальной" сборке, и я не могу изменить код в этой сборке.

Я хочу удалить элемент из ddl, но не из коллекции, к которой привязан ddl (?).

Правка 2020.02.14 =============================

Я потрогал его, но я не на работе, и не помню, что это было, чтобы исправить это. Я проверю это во вторник (у нас выходной понедельник). Кажется, я помню, что мне нужно было изменить селектор на что-то вроде
"#[ID*='ddlList']"


Что я уже пробовал:

Я попытался добавить следующее в раздел сценария файла Default.master:

$("#ddlList option[value='2']").remove();

а это:
$("#ddlList option[value='2']").hide();

а также это:
$("#ddlList").ajaxComplete(function()
{
    $("#ddlList option[value='2']").remove();
}


РЕДАКТИРОВАТЬ =================

Я также попробовал это (из-за произвольного украшения id, которое ASP.Сеть делает):

$("[ID*='ddlList'] option[value='2']").hide();


Кстати, я проверил, что ddl содержит опцию, которую я ищу, но скрытие/отключение ее, похоже, не имеет никакого эффекта.

РЕДАКТИРОВАТЬ ======================

Этот:
$("[ID*='ddlList']").find("option.contains('2')").hide();

на самом деле меняет необходимый параметр для этого:
<option value="2" style="display:none;">2</option>
но элемент по - прежнему отображается в раскрывающемся списке.

ZurdoDev

$("#ddlList option[value='2']").remove(); будет работать, так что просто отладьте его. Но почему он у вас есть в .ajaxComplete?

#realJSOP

Это было что-то, что я пробовал, без какой-либо основы в опыте. Да, это был удар ножом в темноте.

ZurdoDev

Так же как и код, но не в ajaxComplete. Я сомневаюсь, что это мероприятие проходит. Просто добавьте код из любой функции, которую вы хотите удалить.

Richard Deeming

Документация предполагает, что вы не можете удалить элемент, не удалив его из источника данных. Возможно, вы могли бы использовать пользовательский шаблон, чтобы скрыть или отключить его вместо этого?

ZurdoDev

Трудно поверить, что jquery находится на стороне клиента, и там можно что-то изменить без ведома сервера. Это может в конечном итоге вызвать проблемы с моделью при отправке обратно, но я сомневаюсь в этом.

Richard Deeming

Для кендо UI, похоже, модели в JavaScript, а также. Я не знаю, будут ли изменения отправлены обратно на сервер, но я предполагал, что Джон не хотел удалять элемент из коллекции на стороне клиента.

Хотя я предполагаю, что это может быть просто версия MVC; возможно, версия WebForms работает по-другому.

Richard Deeming

Используете ли вы Кендо.данных.Источник данных[^] чтобы связать список? Похоже, что вы могли бы использовать фильтр[^] свойство для фильтрации элемента, который вам не нужен.

#realJSOP

ммм, я не знаю - мне нужно покопаться в этом спагетти-коде, чтобы найти его. снова.

1 Ответов

Рейтинг:
2

Member 14568714

$("#ddlList option[value='2']").удалить();
$("#ddlList option[value='2']").скрыть();
оба работают нормально.


#realJSOP

я здесь не работаю.

ZurdoDev

Что, вероятно, означает, что ваш селектор ошибочен или ваш код фактически не выполняется. В любом случае, вам придется отлаживать его, так как мы не можем запустить ваш код.