親にクラスを追加しようと<li>
していますが、これは私が結果なしで試してきたことです:
function calendaractive(){
$(this).parent('li').addClass("active");
}
HTML
<li>
<a href="javascript:void(0)" onclick="calendaractive();">2009</a>
</li>
これが機能しないのはなぜですか?
親にクラスを追加しようと<li>
していますが、これは私が結果なしで試してきたことです:
function calendaractive(){
$(this).parent('li').addClass("active");
}
HTML
<li>
<a href="javascript:void(0)" onclick="calendaractive();">2009</a>
</li>
これが機能しないのはなぜですか?
試す。関数バインディングで
渡しますthis
<li>
<a href="javascript:void(0)" onclick="calendaractive(this);">2009</a>
</li>
それに応じてJSを変更します
function calendaractive(anchorLink){
$(anchorLink).parent().addClass("active");
}
HTML と JavaScript を混在させない方がよいでしょう。JavaScript 自体の中でクリックを確認する方が良いでしょう:-
$(document).ready(function(){
$('li > a').on('click', function(e) {
$(this).parent().addClass('active');
});
});
JavaScript を HTML から分離しておくと、保守が容易になります (同じ議論が CSS にも当てはまります)。
onClickメソッドの代わりにJQueryを使用してイベントを追加する必要があります。
JSは、代わりに次のようにする必要があります。
$(document).ready(function(){
$("a").click(function() {
$(this).parent('li').addClass("active");
});
});
このようなHTML
<li>
<a href="#">2009</a>
</li>
これによりすべてのアンカーリンクが追加されることに注意してください。特定のアンカーリンクにのみクリックイベントを追加する場合は、クラスを使用してください
JavaScriptのthis
キーワードは、さまざまな場所でさまざまなことを意味します。ウィンドウの場合もあれば、それが使用される機能の場合もあれば、別の何かの場合もあります。関数の呼び出し方法によって異なります。詳細 (およびより正確な情報) は次のとおりです。「this」キーワードはどのように機能しますか?
したがって、$(this)
jQuery を作成したときは、このクラスをこのオブジェクトに追加する必要があると考えていました。
id によるセレクターを jQuery の引数として配置するか、引数を渡すと、コードが機能するはずです。