2013-05-03 446 views
0

我剛剛問過這個問題(Call function in custom function)以瞭解如何在自定義函數中調用函數,它的效果很好。然而,我想在我的HTML中使用我的onClick上的prepareSlide函數。如何在itemSlider函數中調用prepareSlide來自'外部'的自定義函數中的調用函數

jQuery('.item_holder').itemSlider(); 

$.fn.itemSlider = function (details) { 
    var itemHolder = this; 
    this.prepareSlide = function(slideNumber) { 
     alert(1); 
    } 

    itemHolder.prepareSlide(1); 
} 

itemSlider功能在使用的onClick滑塊的底部增加了分頁瀏覽到某個幻燈片馬上(這就是它應該ATLEAST工作),像這樣:

<a href="#" class="number" onclick="prepareSlide(1);" id="number_1">&nbsp;</a> 

回答

1

你不能將其添加到onClick事件中,即使可以,也不應該。

你寫的函數爲jQuery添加了prepareSlide()功能,這意味着它需要在jQuery對象上調用。您將無法在jQuery之外訪問該方法。

這實際上對你來說是件好事,因爲你不應該在HTML中使用onClick屬性。 jQuery的事件處理模型功能更強大,更靈活,並且可以通過類似訪問:

$('#number_1').on('click', function() { 
    $('.item_holder').prepareSlide(1); 
}); 

這實際上是(恕我直言)jQuery的最有用的功能,可以方便地前往事件和文檔對象模型之一。如果你感覺雄心勃勃,可以將選擇器更改爲$('。number')並調整代碼以從id字段提取數字,並用3或4行代碼覆蓋整個列表。

+0

我正在使用包含prepareSlide函數的用戶定義函數。你的方法不適用於這種結構。特別是考慮到我在飛行中建立數字(取決於有多少) – CaptainCarl 2013-05-03 09:42:38

+0

更正:隨着我自己的一些補充,這可以在對象內工作。儘管我使用'this'而不是'$('。item_holder')' – CaptainCarl 2013-05-03 09:45:28