Как удалить инициализацию JavaScript? - PullRequest
1 голос
/ 24 марта 2011

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

У меня это работает, используя следующее:

http://jsfiddle.net/ydPfH/6/

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

Код, который инициализирует этот плагин, - $("body select").msDropDown();, и ниже у меня есть простая форма поиска, которая использует этот плагин, - расширяемый div jquery, поэтому вы нажимаете Advanced Search, чтобы развернуть форму с динамическими выпадающими списками.

<a href="#" rel="toggle[advancedsearch]" data-openimage="images/collapse.png" data-
closedimage="images/expand.png">Advanced Search<img id="expand" 
src="images/collapse.png"/>   </a> 
<div id="advancedsearch">
<p>Document Properties:</p>
<form>
<select id="tags" name="tags" class="tags">
etc....

Я надеюсь, что какой-то onclick или что-то еще проще вызвать в другой метод JS, чтобы каким-то образом удалить инициализацию $("body select").msDropDown(); или даже инициализировать что-то глупое, что, в свою очередь, удалит его.

Полный источник страницы можно посмотреть здесь, если это поможет: http://jsfiddle.net/pQ9LT/

Спасибо

Martin

Ответы [ 2 ]

2 голосов
/ 24 марта 2011

Если я правильно понял, вот ответ:

Вы должны добавить class атрибуты к <select> элементам, которые будут использовать ваш плагин msDropDown.Затем инициализируйте плагин следующим образом: $('select.yourClass').msDropDown();, где yourClass - это имя класса, которому вы присвоили эти <select> элементы.Часть body в вашем селекторе является излишней.

Таким образом, jQuery будет применять плагин только к элементам <select>, «помеченным» вашим именем класса, но не ко всем из них, так что вы можете использовать другой«нормальные» <select> элементы без помех.

Надеюсь, я вам помог.

1 голос
/ 24 марта 2011

Мне не совсем ясно, каковы ваши общие требования и что может или не может быть приемлемым, поэтому у меня есть несколько соображений.

  1. Дайте выбранным элементам, которые вы не хотите использовать в качестве комбинированных изображений, class или id. Затем используйте селектор : not () в сочетании с инициализацией msDropdown

    $("body select:not('.nostyle')").msDropDown(); //using the class 'nostyle' to filter out the elements that should get the image combobox 
    
  2. Использовать более специфичный селектор в вызове инициализации; это своего рода противоположность вышесказанному

    $("body select.classOfSelectsTobeStyled").msDropDown(); //using the class 'classOfSelectsTobeStyled' on elements that should get the image combobox   
    
...