3

親にクラスを追加しようと<li>していますが、これは私が結果なしで試してきたことです:

function calendaractive(){
    $(this).parent('li').addClass("active");
}

HTML

<li>
    <a href="javascript:void(0)" onclick="calendaractive();">2009</a>
</li>

これが機能しないのはなぜですか?

4

4 に答える 4

7

試す。関数バインディングで
渡しますthis

<li>
    <a href="javascript:void(0)" onclick="calendaractive(this);">2009</a>
</li>  

それに応じてJSを変更します

function calendaractive(anchorLink){
    $(anchorLink).parent().addClass("active");
}
于 2013-02-06T10:17:43.517 に答える
3

HTML と JavaScript を混在させない方がよいでしょう。JavaScript 自体の中でクリックを確認する方が良いでしょう:-

$(document).ready(function(){    
    $('li > a').on('click', function(e) {           
        $(this).parent().addClass('active');            
    });    
});

JavaScript を HTML から分離しておくと、保守が容易になります (同じ議論が CSS にも当てはまります)。

于 2013-02-06T10:19:37.277 に答える
1

onClickメソッドの代わりにJQueryを使用してイベントを追加する必要があります。

JSは、代わりに次のようにする必要があります。

$(document).ready(function(){ 
    $("a").click(function() {
        $(this).parent('li').addClass("active");
    });
});

このようなHTML

<li>
    <a href="#">2009</a>
</li>

これによりすべてのアンカーリンクが追加されることに注意してください。特定のアンカーリンクにのみクリックイベントを追加する場合は、クラスを使用してください

于 2013-02-06T10:21:26.823 に答える
0

JavaScriptのthisキーワードは、さまざまな場所でさまざまなことを意味します。ウィンドウの場合もあれば、それが使用される機能の場合もあれば、別の何かの場合もあります。関数の呼び出し方法によって異なります。詳細 (およびより正確な情報) は次のとおりです。「this」キーワードはどのように機能しますか?

したがって、$(this)jQuery を作成したときは、このクラスをこのオブジェクトに追加する必要があると考えていました。

id によるセレクターを jQuery の引数として配置するか、引数を渡すと、コードが機能するはずです。

于 2013-02-06T10:31:52.713 に答える