loading
Please wait while loading...
返回 小心使用$.inArray

今天我在整理我的 jQuery slide show plugin 時發現 slide 這個 effect 無法正常運作, 研究了差不多半個小時, 才發現原來是我對 $.inArray 理解錯了。

我是利用 $.inArray() 去檢查 slide 這個變數是否存在於那個 array 內:

if($.inArray('slide',['slide','e2','e3'])) {
    function();
}
 

從語法上看, 我們期望當effect 等於 slide 時 function 會運行.

但事實卻不如所想, 因為 $.inArray() 和 PHP 的 in_array() 並不相同, 它和 array_search 才更為吻合。當搜尋的字串從 array 中搜尋到時, 它會回傳該字串在該 array 中出現的位置的鍵 (key index), 如沒有搜尋到則傳回 -1, 換句話說, 如果你搜尋的字串是該 array 的第一個元素, 它便是回傳 0 這個 index, 而 0 在 js 中卻又等同於 false, 所以 function 便未能執行。

所以, 當我們要搜尋一個字串是否存在於一個 array 時, 我們應該檢查該結果是否等於 -1, 這樣才能取得正確的答案。

effect = 'slide'
if($.inArray(effect,['slide','e2','e3'])!=-1) {
    function();
}
Comments
comments powered by Disqus