0
4

3 に答える 3

2

コードのこの部分でthisは、オブジェクトではなく関数自体を参照します。

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

代わりにこれを使用してください:

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

これは、それを示すJSFIDDLEです

于 2012-08-01T09:18:51.200 に答える
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

于 2012-08-01T09:21:10.117 に答える
1

編集: 申し訳ありませんが、wrap() の場合は代わりに wrapInner() です。

三つのこと:

1) .each() は必要ありません。単純に:

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

2) HTML にタイプミスがあります:

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

3) 「h2 a」クリック イベントに「parent()」がありません。

$(".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

于 2012-08-01T09:23:05.127 に答える