2012-08-01 46 views
0

我使用我的網頁jQuery的手風琴,這裏是HTML,追加<a>使用jQuery

<div class="forms-cont"> 
    <h5> 
     Accordian Examples</h5> 
    <div class="accordian"> 
     <div> 
      <h2 class="sch-hdr"> 
       Header One</h2> 
      <div class="sch-cont levelOne"> 
       <p> 
        this is a title text - level one</p> 
      </div> 
     </div> 
     <div class=""> 
      <h2 class="sch-hdr"> 
       Header Two</h2> 
      <div class="sch-cont levelOne"> 
       <p> 
        This is another title text - level one 
       </p> 
       <div class="martop10"> 
        <h3 class="subgr-hdr"> 
         Staff</h3> 
        <div class="sch-cont levelTwo"> 
         <p> 
          This is an inner text 
         </p> 
        </div> 
       </div> 
       <div class=""> 
        <h3 class="subgr-hdr"> 
         Manager</h3> 
        <div class="sch-cont levelTwo"> 
         <p> 
          This is an inner text 
         </p> 
        </div> 
       </div> 
      </div> 
     </div> 
    </div> 
</div> 

在此,我需要附加的手風琴工作錨標記,這裏是我的jQuery,

$(document).ready(function() { 

    // Accordian Main 
    $('.accordion h2, .accordion h3').addClass('closed'); 
    $('.levelOne,.levelTwo').hide(); 
    $('.accordion h2, .accordion h3').each(function() { 
      $(this).html(function() { 
      var headertext = '<a href="#">' + $(this).html() + '</a>'; 
      return headertext; 
     }); 
    }); 

    // Level 1 Accordian 
    $(".accordion h2 a").click(function() { 
     alert('hi'); 
      $(this).next(".levelOne").slideToggle("slow"); 
      $(this).toggleClass("closed"); 
      return false; 
    }); 
    // Level 2 Accordian 
    $('.accordion h3 a').click(function() { 
      $(this).parent().next(".levelTwo").slideToggle("slow"); 
      $(this).parent().toggleClass("closed"); 
      return false; 
    }); 
    }); 

但我無法在H2和H3中附加錨。任何幫助?

+1

一個錯字'accordian'在HTML和'accordion'在你的js – 2012-08-01 09:18:27

+0

你實際上並沒有與此代碼創建一個手風琴... – 2012-08-01 09:18:28

+0

小提琴將幫助 – techfoobar 2012-08-01 09:19:28

回答

1

編輯:對不起,是wrapInner()來代替,如果包裹()。

三兩件事:

1)你不需要的。每個(),簡單地說:

$('.accordion h2, .accordion h3').wrapInner('<a href="#"></a>'); 

2)。在你的HTML一個錯字:

<div class="accordian"> <-- accordion? 

3)「h2 a」點擊事件中缺少「父()」:

$(".accordion h2 a").click(function() { 
     $(this).next(".levelOne").slideToggle("slow"); <-- actual 

$(".accordion h2 a").click(function() { 
     $(this).parent().next(".levelOne").slideToggle("slow"); <-- with parent() 

然後它會工作:)

的jsfiddle:http://jsfiddle.net/fy2uM/2

+0

我沒有看到提醒...小提琴似乎不工作 – 2012-08-01 09:28:17

+0

@devundef:非常感謝。它工作正常:) – steeve 2012-08-01 09:49:58

2

在代碼中的這一部分,this指函數本身,而不是對象:

$('.accordion h2, .accordion h3').each(function() { 
     $(this).html(function() { 
     var headertext = '<a href="#">' + $(this).html() + '</a>'; // <-- HERE 
     return headertext; 
    }); 
}); 

SE這個代替:

$('.accordion h2, .accordion h3').each(function() { 
     var that = this; 
     $(this).html(function() { 
     var headertext = '<a href="#">' + $(that).html() + '</a>'; 
     return headertext; 
    }); 
}); 

這裏有一個JSFIDDLE證明它

1

外貌像你拼錯手風琴:

將其更改爲:

$('.accordian h2, .accordian h3').each(function() { 
      $(this).html(function() { 
      var headertext = '<a href="#">' + $(this).html() + '</a>'; 
      return headertext; 
     }); 
    }); 

見JS這裏小提琴http://jsfiddle.net/HukJE/4

+0

我沒有看到警報提示......小提琴似乎不工作,如果你改變'accordion'到'accordian'我想你應該重新命名所有 – 2012-08-01 09:28:10

+0

我只有錨標籤工作,因爲那似乎是主要問題現在嘗試:http://jsfiddle.net/HukJE/3/ – CraftyFella 2012-08-01 09:28:59

+0

@bart:雅,這就是我現在面臨的。我需要切換這個。第二個標題包含兩個內部切換器。請幫忙。 – steeve 2012-08-01 09:31:07