2013-11-21 23 views
0

我有這樣的功能:如何將這個數組傳遞給我的JQuery函數?

function activateControlFlow(arrayControl) { 
    $.each(arrayControl, function(){ 
     console.log(this); 
     $(this).css({color:'#FFF', cursor: 'pointer'}); 
    }); 
} 

,我不明白爲什麼如果我通過這個功能只有一個項目,我打印該項目作爲數組。這是我的例子:

activateControlFlow(["a#nexth"]); 

,並在控制檯它打印此:

String {0: "a", 1: "#", 2: "n", 3: "e", 4: "x", 5: "t", 6: "h"} 

爲什麼???

+0

你能給的arrayControl值是傳遞一個例子嗎?你確定它是一個dom對象的數組嗎? –

+0

是的這是一個對象數組,但我不知道如何去做 – Monica

+1

這是一個完全合法的問題。只是表達了一種奇怪的方式。 – redolent

回答

2

的問題是,你使用this而不是函數的參數,如jQuery的API定義(http://api.jquery.com/jQuery.each/

function activateControlFlow(arrayControl) { 
    $.each(arrayControl, function(index, value){ 
     console.log(value); 
     $(value).css({color:'#FFF', cursor: 'pointer'}); 
    }); 
} 
+1

我還建議將變量的名稱從「'value」更改爲「'selector」「 – redolent

0

所以我用「一個#nexth」,而不是$( 'a#nexth'),顯然我發送的是字符串而不是Object本身。

因此,它應該是這樣的:

activateControlFlow([$('#nexth')]); 
+0

不使用jQuery對象可能更容易。考慮:'activateControlFlow(['#nexta','#nextb','#nextc'])'而不是'activateControlFlow([$('#nexta'),$('#nextb'),$('#nextc) 「)])' – redolent