2011-04-26 89 views
3

確定這裏的變量是我的代碼:jQuery的:作爲ID選擇不工作

$tabularID = 0; 
$('a.swfselector').live('mouseover', function(event) { 
      $tabularID= $(this).parent().attr('id'); 
      $(this).parent().children().not(this).find('.tab').each(function() { 
         $(this).fadeTo(100, 0.4) 
      }) 
      $(this).find('.tab').each(function() { 
         $(this).fadeTo(100,1) 
      }) 

    }); 
$('#' + $tabularID).live('mouseleave', function(event) { 
      alert($tabularID); 
      $(this).children().find('.tab').each(function() { 
         $(this).fadeTo(100,1) 
      }) 

    }); 

Jquery的不喜歡這個選擇:

$('#' + $tabularID) 

雖然如果我將其更改爲:

$('#27') 

它警告我的變量$ tabularID就好了,所以我知道它不是錯誤的變量($ tabularID的輸出是27)。我需要一個變量,因爲父ID會根據它們的鼠標懸停而發生變化。

任何人都可以看到我不能?可能真的很明顯。

+0

不知道他們是否是你的問題的根源,但你不能用純數字作爲標識。用像a27'這樣的字母作爲前綴, – 2011-04-26 08:28:16

+0

歡呼聲,儘管這不能解決問題。這是什麼原因? – 2011-04-26 08:30:06

+1

規範;)http://www.w3.org/TR/html401/types.html#type-name雖然我認爲在HTML5中是允許的。 – 2011-04-26 08:30:51

回答

7

你的ID必須以字母AZ或AZ開頭。

此代碼$('#'+ $ tabularID)僅在第一次運行時受到影響。這意味着你的$ tabularID = 0

當你的鼠標在它只更新$ tabularID值,但不會更新綁定到這個對象$的事件(「#」 + $ tabularID)

我以爲你可以改變你的代碼是這樣的:

$tabularID = 0; 
$('a.swfselector').live('mouseover', function(event) { 
      $tabularID= $(this).parent().attr('id'); 
      $(this).parent().children().not(this).find('.tab').each(function() { 
         $(this).fadeTo(100, 0.4) 
      }) 
      $(this).find('.tab').each(function() { 
         $(this).fadeTo(100,1) 
      }) 

      $('#' + $tabularID).live('mouseleave', function(event) { 
       alert($tabularID); 
       $(this).children().find('.tab').each(function() { 
         $(this).fadeTo(100,1) 
       }) 

      }); 

    }); 
+0

你看過評論嗎? OP已經嘗試過,並沒有奏效。如果ID不在變量中,它也可以工作,所以這不成問題。 – 2011-04-26 08:43:15

+0

更新我的公交 – YNhat 2011-04-26 08:47:12

+0

我認爲就是這樣。問題是,你會重新將事件處理程序重新綁定到同一個元素。你也必須刪除它們。 – 2011-04-26 08:52:00

2

我經常在選擇器中使用變量。所有這些對我來說都很好。請避免使用像'123'這樣的ID。 ID命名規則:

  • 必須以字母開頭AZ或az
  • 可以跟隨:字母(A-ZA-Z),數字(0-9),連字符( 「 - 」),下劃線( 「_」),冒號( 「:」),和句( 「」)
  • 值是區分大小寫的
+0

我已更改ID以符合此格式,但它仍然無效:(。 – 2011-04-26 08:36:07

+0

請將您的代碼放在http://jsfiddle.net/上,例如,不僅可以看到JS代碼,也可以看到HTML代碼。 – CoolEsh 2011-04-26 08:38:07

+0

由於OP已經在他的問題的評論中指出,他試過這個,它沒有工作... – 2011-04-26 08:43:50

0

我也遇到了這個問題與jQuery,但發現,常規的JavaScript DOM可以處理的ID以數字開頭,如果這就是問題所在。在這種情況下,這可能會起到幫助作用,但是可能值得一看的是,如果更改代碼段更容易,而不是更改ID的設置方式。

document.getElementById(tabularID) 

請注意,您在開始時不需要'#'。

More info on document.getElementById