2012-08-10 6 views
1

헤이 사람의 내가 요소를 중첩 때 내 코드가 작동하지 않는 이유를 알아낼 수 없습니다 ... JQuery if 문이 중첩 요소에서 작동하지 않습니까?

가 여기 내 html 코드

<head> 
    <script type="text/javascript" src="jquery.js"></script> 
    <script type="text/javascript" src="head.js"></script> 
    <title>Test Page</title> 
    <link rel="stylesheet" type="text/css" href="mock.css" 
    /> 
</head> 
<body> 
    <div id="subMenu"> 
     <ul> 
      <li class="button boxshadow"> 
       <a class="subnav" href="#">Test</a> 
       <ul> 
        <li class="button boxshadow"> 
         <a class="subnav" href="#">Testing</a> 
        </li> 
        <li class="button boxshadow"> 
         <a class="subnav" href="#">Tested</a> 
        </li> 
       </ul> 
      </li> 
      <li class="button boxshadow"> 
       <a class="subnav" href="#">Works</a> 
      </li> 
      <li class="button boxshadow"> 
       <a class="subnav" href="#">Other</a> 
       <ul> 
        <li class="button boxshadow"> 
         <a class="subnav" href="#">Other</a> 
        </li> 
        <li class="button boxshadow"> 
         <a class="subnav" href="#">Other</a> 
        </li> 
       </ul> 
      </li> 
      <li class="button boxshadow"> 
       <a class="subnav" href="#">Last</a> 
       <ul> 
        <li class="button boxshadow"> 
         <a class="subnav" href="#">Last1</a> 
        </li> 
        <li class="button boxshadow"> 
         <a class="subnav" href="#">Last2</a> 
        </li> 
        <li class="button boxshadow"> 
         <a class="subnav" href="#">Last3</a> 
        </li> 
        <li class="button boxshadow"> 
         <a class="subnav" href="#">Last4</a> 
        </li> 
       </ul> 
      </li> 
     </ul> 
    </div> 
</body> 

내 CSS의

.button { 
    background: url(images/button.jpeg) no - repeat; 
    background - size: 100 % ; 
    position: relative; 
    display: block; 
    float: left; 
    width: 165px; 
    text - align: center; 
    left: 25px; 
    margin: 5px 10px; 
} 

및 내 자바 스크립트/jquery

$(document).ready(function() { 
    $('.button').bind("mouseover", function() { 
     $(this).css("box-shadow", "0 0 10px 5px #B6B6B6"); 

     if ($(this).text().toLowerCase() == "test".toLowerCase()) { 
      a = "blah." 
      b = "blah." 
      c = "blah." 
      d = "blah." 
      e = "blah." 
      f = "blah." 

      handle(a, b, c, d, e, f); 
     } 
     if ($(this).text().toLowerCase() == "works".toLowerCase()) { 
      a = "blah" 
      b = "blah." 
      c = "blah" 
      d = "blah" 
      e = "Blah" 
      f = "Blah" 

      handle(a, b, c, d, e, f); 
     } 

     $(this).bind("mouseout", function() { 
      $(this).css("box-shadow", "5px 5px 10px #070707"); 
     }) 
    }) 
})​ 

하위 목록이 2 개의 하위 목록이있는 "test"와 같은 하위 항목이 있는데 "if"와 똑같은 하위 목록을 제거하면 "if"문이 작동합니다. 하위 목록을 기본 목록에 추가하자 마자 mouseover가 코드의 .css 부분을 작업하고 있기 때문에 작동하지 않는다고하더라도 if 문은 작동하지 않습니다.

여기에 무슨 일이 일어나고 있는지에 대한 아이디어는 크게 될 것입니다 appreciated .. 나는 JQuery에 익숙하지 않고 Java Script가 아닌 내 사이트로 이동하고 있습니다. thx

+3

' "작품".toLowerCase()'? 왜? – undefined

+0

예, 이유가 무엇입니까? 충분하다'$ (this) .text(). toLowerCase() === "test"' –

+0

나는 중복을 알고 있지만, 당시에 얼마나 효과가 있었는지를보기 위해 메서드를 가지고 놀고 있었다. 원래 이것은 테스트 용이었다. 그리고 쓸모가 없다는 것을 나는 안다 : P ... 이제는 내 질문에 변화가있다. 3 가지 항목의 텍스트 값을 모두 잡아 내고 있다는 것을 알아 냈고, 그들은 모두 같은 클래스에 속해 있고 jquery 문은 $ 클래스에 있지만 여전히 개별적으로 커서를 가져 가면 불가능합니다. 코드의 .css 부분은 개별적으로 완벽하게 작동합니다. 왜 3 개의 텍스트를 모두 차지하고 있습니까? –

답변

0

String 객체의 함수 부분이므로 .toLowerCase()를 문자열에 직접 사용할 수 있는지 확신하지 못합니다.

따라서 하드 코딩을 한 이후로 그 값을 정확히 알 수 있습니다. 방정식의 오른쪽 부분에서이 함수를 사용하는 이유는 무엇입니까?

if ($(this).text().toLowerCase() == "test") 

는 문제를 해결해야합니다. 테스트하려면 console.log (사용자의 상태)를 시도해야합니다.

귀하의 코멘트와 코드를 기반으로 편집

, 선택 및/또는 HTML 구조의 문제가 될 것으로 보인다. 더 많은 li 항목을 포함하는 li에 적용되는 .button을 대상으로합니다. html을 동일한 수준으로 "평평하게"만들 수 있습니다. 또는 더 간단하게 선택기와 클래스를 조정할 수 있습니다.

$(this).find("a").first().text(); // or "a:first" 

아마 더 예뻐 것이 있습니다 그러나 이것은 어디로 당신이 이해 할 수 는하지만 가장 좋은 방법은 다음과 같은 생각? sub li에 들어가는 것을 막기 위해 .first() 사용하기.

+0

Thx에 대한 귀하의 의견에, 당신은 실제로 테스트를 거친 문자열에 대한 방법을 사용할 수 있습니다 사실,이 코드를 실행하여 $ (this) .text()이 무엇인지 그리고 나는 그것을 잡는 것으로 나타났습니다 부모 목록 및 하위 목록 메뉴 (기본적으로 하위 요소가 포함되어 있음에도 불구하고). $ (this) .text()는 "Test Testing Tested"를 출력하므로 if 문이 작동하지 않는 이유 그것은, 그냥 방법은 내가 기대했던 출력을 생산하지 않습니다 ... –

+0

당신이 내 편집에서 수정 찾을 것입니다, 나는 그것이 효과가 있기를 바랍니다! –

+0

또한 "테스트"이벤트가 첫 번째 li.button –

관련 문제