2013-04-03 45 views
3

我想制作一个简单的jQuery手风琴插件,但无法弄清楚为什么'this'关键字不能正常工作。这里的插件的代码:为什么this.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

“不工作”究竟如何?选择器是空的,因为没有找到元素,或者它在控制台中抛出错误。语法似乎完全有效! – adeneo

回答

6

现在,OP提供了代码使用的例子小提琴,问题是手风琴DIV选择,它应该是:

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

注意:选择器是缺少.,以确定它是一个class选择

Here is the fix

+0

+1。 FWIW,许多其他人也在努力,因为OP没有提供足够的信息,所以他们刚刚无法正确回答。 – Alnitak

+1

@Alnitak:是的,但我是一个坚持并付出额外努力的人。对于那些同意我的回答并且认为是正确的原始5个人,我不能承担责任,我认为这也是公平的,也可以说这5个人可能会保留看到我最新答案的满意答卷(假设他们没有无论如何,它已经看不到了) – musefan

相关问题