2012-11-11 64 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