Добавить JQuery MultiSelect к существующему объекту MultiSelect - PullRequest
2 голосов
/ 24 апреля 2019

Я пытаюсь обнаружить изменения в JQuery MultiSelect для запуска обновления в другом месте. Обычный javascript для изменений не работает, потому что выбор не меняется. Я нашел метод под названием «beforeclose», который вызывается из функции закрытия MultiSelect. Я думаю, что могу использовать это. Я обнаружил, что если я добавляю его при создании MultiSelect, он работает как положено и регистрирует сообщение при закрытии выбора. Смотри ниже:

$j("#selectId").multiselect({
    checkAllText: 'Select all',
    uncheckAllText: 'Deselect all',
    beforeclose : function() {
        console.log("before close")
    }
}).multiselectfilter();

Но я не могу этого сделать, потому что MultiSelect создается в другом месте, поэтому мне нужно просто добавить этот метод в него. Я пробовал много разных вещей, как:

$j("#selectId").multiselect().data("ech-multiselect").beforeclose = function() {
    console.log("before close")
};

Но, похоже, ничего не работает. Есть идеи? Спасибо

1 Ответ

0 голосов
/ 24 апреля 2019

Можете ли вы создать кодовую ручку или jsfiddle, чтобы повторить возникшую проблему?Я уверен, что я или кто-то еще мог бы помочь с работающей моделью.

Я думаю, что ваш синтаксис немного не в порядке, если вы хотите использовать beforeclose.Если бы это был диалог, вы бы использовали

$( ".selector" ).dialog({
  beforeClose: function( event, ui ) {}
});
// and bind an event listener
$( ".selector" ).on( "dialogbeforeclose", function( event, ui ) {} );

В качестве альтернативы вы могли бы использовать функцию jQuery on.Изменения будут выглядеть так:

$(document).on('change', '#selectId', function() {
  // Fires every time selectId is changed
});

https://api.jquery.com/on/#example-7 пользовательский обработчик событий может работать для вас.

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