2011-04-26 2 views
3

작동하지 ID 선택기 등의 변수는 내 코드입니다 :JQuery와 : 여기에 좋아

$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'와 같은 문자를 접두사로 붙입니다. –

+0

정보를 건네 주면 문제가 해결되지 않지만. 이것에 대한 이유는 무엇입니까? –

+1

사양;) http://www.w3.org/TR/html401/types.html#type-name HTML5에서 생각 하긴하지만 허용됩니다. –

답변

7

귀하의 ID 편지 az 또는 AZ로 시작해야합니다.

이 코드 $ ('#'+ $ tabularID)는 처음 실행했을 때만 영향을받습니다. 그것은 당신의 $ tabularID = 0

때 마우스를 통해 그것은 단지 $ tabularID 값을 업데이트하지만이 개체 $의 이벤트에 바인딩 업데이트되지 않습니다 ('#'+ $ tabularID)

I을 의미한다

$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가 변수에없는 경우에도 작동하므로 문제가 될 수 없습니다. –

+0

업데이트 : 내 comm12ent – YNhat

+0

나는 그것이다고 생각한다. 문제는 이벤트 핸들러를 동일한 요소에 반복해서 리 바인드한다는 것입니다. 당신도 그들을 제거해야 할 것입니다. –

2

저는 셀렉터에서 변수를 자주 사용합니다. 그리고 나에게 이런 식으로 모두 잘 작동합니다. '123'과 같은 ID는 사용하지 마십시오. ID 명명 규칙 :

  • 문자로 시작해야 AZ 또는 AZ
  • 다음 수 있습니다 : 문자 (A-ZA-Z), 숫자 (0-9), 하이픈 ("-"), 밑줄 ("_"), 콜론 (":"), 마침표 (".")
  • 값은 대소 문자를 구분
+0

이 형식을 충족시키기 위해 ID를 변경했지만 여전히 작동하지 않습니다. (. –

+0

예를 들어 http://jsfiddle.net/에 코드를 게시하십시오. JS 코드뿐만 아니라 HTML 코드도 보는 것이 좋습니다. – CoolEsh

+0

OP 질문에 대한 코멘트에 이미 언급했듯이, 그는 이것을 시도했으나 효과가 없었습니다 ... –

0

나는 또한 jQuery로이 문제가 발생하지만, 일반 자바 스크립트 DOM은 그게 문제라면 숫자로 시작하는 ID의의를 처리 할 수 ​​있다는 것을 발견했습니다 당신이 이런 식으로 코드를 변경 수 있다고 생각합니다. 이 경우 도움이 될 수도 있지만 ID를 설정하는 방법을 변경하는 대신 해당 코드를 변경하는 것이 더 쉬운지 살펴 보는 것이 좋습니다.

document.getElementById(tabularID) 

처음에는 '#'이 필요하지 않습니다. 그들이 당신의 문제의 뿌리,하지만 당신은 ID가 순수한 번호를 사용하지해야하는지 여부를 확실하지

More info on document.getElementById