как прикрепить и отсоединить метод плагина - PullRequest
1 голос
/ 16 мая 2011

Я пытаюсь отсоединить, а затем повторно присоединить метод плагина jquery к div на основе true или false, возвращаемых внешней функцией. Используя unbind, я могу отсоединить метод accordion () от div, однако я не могу снова привязать метод accordion к div. Как только метод unbind будет выполнен, даже если условие вернет true, код "$ ('container'). Accordion ()" не будет работать. Пожалуйста, предложите правильный способ отсоединить метод плагина, а затем связать его снова.

Ниже приведен пример кода для вашей справки-

HTML:

<div class="container" onmousedown="abc()">

Javascript:

function abc(){
  if (true) {
    $(".container").accordion();
  } else {   
    $(".container").unbind();
  }
}

Ответы [ 3 ]

1 голос
/ 16 мая 2011

Не использовать unbind;вместо этого используйте команду "destroy".

Например:

function abc(){
  if (/* condition */) {
    $(".container").accordion();
  } else {   
    $(".container").accordion('destroy');
  }
}

См. документы .Вместо этого может быть более целесообразно использовать команды enable и disable, в зависимости от ваших обстоятельств.

0 голосов
/ 16 мая 2011

У меня нет прямого ответа, но, похоже, есть подсказка.

Вы должны проверить, какой класс добавляется в ваш div, а затем применить на нем значение accordion (). Это может быть легко увидеть с помощью Firebug. Поскольку это понятно, код будет

function abc(){
  if (!$(".container").hasClass('some_accordion_class')) {
    $(".container").accordion();
  } else {   
    $(".container").destroy();
  }
}
0 голосов
/ 16 мая 2011

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

function abc(){
  if (true) {
    $.getScript("accordion.js", function(){
    alert("reinitialized");
    });
    $(".container").accordion();
  } else {   
    $(".container").unbind();
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...