2013-04-03 12 views
3

Я пытаюсь создать простой плагин jQuery для аккордеона и не могу понять, почему это ключевое слово не работает так, как должно. Вот код плагина:Почему этот.find() не работает внутри моего плагина?

(function($){ 
$.fn.accrdn = function(userSettings) { 
    var defaults = { 
     toggle: true 
    }; 
    var options = $.extend({}, defaults, userSettings); 
    var handle = this.find('.handle');//doesn't work! 

    if (options.toggle) { 
     handle.click(function(){ 
      $(this).next('.panel').slideToggle(); 
     }); 
    } else { 
     handle.click(function(){ 
      $(this).next('.panel').slideUp(); 
     }); 
    }; 
}; 
})(jQuery); 
+1

вы можете включать, как вы используете плагин? Пример разметки и кода вызова? Возможно [скрипка] (http://jsfiddle.net/). –

+0

, пожалуйста, покажите разметку, сгенерированную плагином. Вызов 'this.find()' является совершенно законным, хотя корректный плагин будет использовать 'this.each()', чтобы применить его к каждому поставляемому элементу, или 'this.first() .find() ', чтобы гарантировать, что он применим только к первому совпадающему элементу. – Alnitak

+0

"does'nt work" как именно? Является ли селектор пустым, как ни в каком элементе, или вызывает ошибку в консоли. Синтаксис кажется совершенно верным! – adeneo

ответ

6

Теперь, когда ОП предоставил пример скрипку в использовании кода, проблема селектор для аккордеона DIV, он должен быть:

$(document).ready(function() { 
    $('.accordion').accrdn({toggle:true, slideSpeed:500}); 
}); 

ПРИМЕЧАНИЕ : селектор пропускал ., чтобы определить это class селектор

Here is the fix

+0

+1. FWIW, много других людей приложили усилия к этому тоже, они просто не могли ответить на него правильно, сначала потому, что OP не предоставил достаточной информации. – Alnitak

+1

@ Алнитак: Да, но я тот, кто застрял и приложил дополнительные усилия. Я не могу нести ответственность за первоначальных 5 человек, которые согласились с моим ответом, и также подумали, что это правильно, я думаю, было бы справедливо также сказать, что эти 5 человек, вероятно, сохранили бы верхнюю позицию, увидев мой обновленный ответ (если бы они были Я уже видел это в любом случае) – musefan