2012-11-11 63 views
0

我正在使用SilverStrips CMS。我的目标是创建一系列开始崩溃的动态div,其中包含用于扩展它们的链接。我试图使用jQuery的slideToggle()函数,并有一个问题让它在函数形式下正常工作。这是我的。jquery dynamic slideToggle

头标签:

$(document).ready(function(){ 
    (function($){ 
     $.fn.collapse = function(itemid){ 
      $(itemid).slideToggle(); 
     }; 
    })(jQuery); 
}); 

,我已经设置的链接,有一个调用的函数坍缩()与动态生成的id作为这样一个onclick事件:

<h3><a href"javascript:void(0)" onclick="collapse(div#itemid)">$Title</a></h3> 

我不知道我是否正确格式化了我的功能。

+1

如果你想避免冲突,你应该把文档准备好在闭包内。或者使用'jQuery(document)'而不是'$(document)' – undefined

回答

0

我认为你的问题就出在这里

<h3><a href"javascript:void(0)" onclick="collapse(div#itemid)">$Title</a></h3> 

我相信它应该是

<h3><a href="javascript:void(0)" onclick="collapse('div#itemid')">$Title</a></h3> 

确保您最初的CSS没有

{height:0px;} 

它应该有

{display:none;} 

取而代之,或者切换器不知道将高度切换到什么位置。


另外,为什么不创建你的这样的功能?

$(document).ready(function(){ 

    function collapse(itemid){ 
     $(itemid).slideToggle(); 
    }; 

}); 
1

,你正在创建函数的方式,你就需要调用它像这样:

$("any selector here").collapse("div#itemid") 

这很可能不是你想要的。相反,试试这个:

$.fn.collapse = function(){ 
     $(this).slideToggle(); 
    }; 

然后,它可以被称为像这样:

$('div#itemid').collapse() 

http://jsbin.com/ozacoq/1/edit


理想情况下,你也应该考虑不在线连接您的处理程序。像这样:

$("a.somelink").click(function(){ 
    $('div#itemid').collapse(); 
}); 
+0

我喜欢这个解决方案!好吧放在一起! – VIDesignz