2011-11-30 55 views
4

下面是代碼,它引用TD和「耕地」是表的ID:爲什麼.index()在此語句中解析爲數字,而.parent()。index()解析爲字符串?

$("#farmland td").click(function(){ 
     $("#console").html($(this).index() + 1 + ", " + $(this).parent().index() + 1); 
    }); 

當我點擊一個TD,我收到1,01或1,11或1,21等等...這個數字正確地爲.index()添加,但爲.parent()。index()添加了1,就好像它是一個字符串!

認爲這非常好奇,因爲我預料它要麼採取單向行動,要麼採取另一種行動,而不是兩種不同的方式!

我的第一個猜測可能是因爲我的+ ", " +將它切換爲字符串?

+2

你的猜測是對的〜 – xdazz

+1

而是$'的(這種)的.index()'你可以使用'this.cellIndex'和,而不是'$(本).parent()指數(。 )'你可以使用'this.parentNode.rowIndex'。直接訪問屬性的速度更快,效率更高,創建一個jQuery對象,然後調用方法。 – RobG

+0

@RobG謝謝,那些工作,爲什麼我能夠使用'this'來代替'$(this)'?也想知道,因爲$(this).parentNode.rowIndex是一個失敗,但this.parentNode.rowIndex是成功的。 – BigOmega

回答

8

這是因爲JavaScript看到第一個index()調用返回一個數字,它將數字1添加到該數字,然後您將它與一個字符串結合,因此它將數字連接到字符串。

對於另外,無論字符串,用括號中的數字隔離從字符串:

$("#farmland td").click(function(){ 
     $("#console").html(($(this).index() + 1) + ", " + ($(this).parent().index() + 1)); 
    }); 
0

每當你想強制變種的數量評價,你可以喜歡的東西1 * your_var它將被解釋爲一個數字

0

它被稱爲從左到右的關聯性。

0

當更好的工具可用時,連接有點難看。如何:

$("#farmland td").click(function(){ 
    $("#console").html([$(this).index() + 1, $(this).parent().index() + 1].join(", ")); 
});