2010-12-06 41 views
1

你看我在比較它們的索引時試圖操縱一些元素。 問題是我的索引沒有分配int值,但保持未定義狀態。.index()問題

$(function(){ 
    var i; 
    $("a").click 
    (
    function() 
    { 
     i = $("a").index(this);      
     $(".textholder div:eq(i)").slideUp(); 
     $(".textholder div:eq(i+1)").css('top', '-210px'); 
     return false; 
     } 
); 
    alert(i); 
}); 

我也打開任何關於我的語法和算法的評論!

有什麼建議嗎? 謝謝大家

+1

你可以發佈你的標記嗎?也許是一個協作網站的演示,如[JS Fiddle](http://jsfiddle.net/)或[JS Bin](http://jsbin.com/)? – 2010-12-06 13:46:47

+2

我不是一個jQuery大師,但我會嘗試傳遞index()函數`$(this)`而不是`this`(我認爲它需要一個jQuery對象)。但我不確定,所以發表評論。 [編輯] OK,我錯了:D – mingos 2010-12-06 13:49:00

回答

4

在任何事情被點擊之前,您都會提示i。當你點擊某個東西時,唯一執行的位是從行function()到行return false;所以難怪i是未定義的。

如果你想看到的i當它被設置的值,移動alert(i)線(甚至更好,將其更改爲console.log())至i = $("a").index(this);線以下。

5

我不知道,這是你唯一的問題,而是:

$(".textholder div:eq(i)").slideUp(); 
$(".textholder div:eq(i+1)").css('top', '-210px'); 

應該是:

$(".textholder div:eq(" + i + ")").slideUp(); 
$(".textholder div:eq(" + i+1 + ")").css('top', '-210px'); 

否則i將不進行評估。

2

i變量不會得到插值內的字符串,把它帶到外面。

$(function(){ 
    var i; 
    $("a").click 
    (
    function() 
    { 
     i = $("a").index(this);      
     $(".textholder div:eq(" + i + ")").slideUp(); 
     $(".textholder div:eq(" + (i+1) + ")").css('top', '-210px'); 
     return false; 
     } 
); 
    alert(i); 
});