7 に答える
質問のマークアップに基づいて、コンテナーのクラスを参照する必要があります。ID がないため、ID では参照しません。
クリックでそれをしたい場合:
$('.mainmenu a').click(function() {
$('li', this).addClass("menupressed");
});
マウスダウンの場合:
$('.mainmenu a').mousedown(function() {
$('li', this).addClass("menupressed");
});
マークアップが無効です。ブロック要素をインライン要素でラップしないでください。
<div class="content">
<ul class="mainmenu">
<li><a href="page1.html">Page1</a></li>
<li><a href="page2.html">Page2</a></li>
<li><a href="page3.html">Page3</a></li>
</ul>
</div><!--content-->
また、idセレクターを使用してクラスを選択しています。これを試してください:
$(function() {
//MOUSE CLICK EVENTS
$('.mainmenu a').click(function() {
$(this).addClass("menupressed");
})
});//END ONLOAD
マークアップを想定
<ul><li><a></li>...</ul>
$(function() {
$('#mainmenu a').on('click', function() {
$(this).parent().addClass("menupressed");
});
});
マウス ボタンが押されてから離されると、click
イベントがトリガーされます。あなたが言ったように、ユーザーが「マウスボタンを3秒間押したままにした」ときに変化を確認できるようにしたい場合は、mousedown
イベントを使用する必要があります。
それぞれの jquery ページで両方の動作を比較できます。
http://api.jquery.com/mousedown/
ただし、ユーザーがマウス ボタンを押したままにし、マウスをアンカー要素の外に移動して離すと、リンクはクリックされないことに注意してください。
特定の要素にクリックを追加するに<a>
は、内部セレクターを失います。
$('#mainmenu a').click(function() {
this.addClass('menupressed');
});
<li>
クラスを次の親要素に追加する必要がある場合:
$('#mainmenu a').click(function() {
this.closest('li').addClass('menupressed');
});
これは、 http: //api.jquery.com/closest/.closest()
にあるメソッドを使用します。
これは3秒間押し続けるとクラスが追加されます。
クラスで動作するように編集
var hammertime=0;
$('.mainmenu a').bind('mousedown',function() {
hammertime= window.setTimeout((function(elem){
return function(){
elem.addClass("menupressed");
}
})($(this).children('li')),3000) // Edit: If li is child, then use children('li')
})
.bind('mouseup',function() {
window.clearTimeout(hammertime);
})
編集:
また、ロード時に実行されるように、すべてをその中にラップしてください。
$(document).ready(function(){
/* the code here */
});
CSS を使用して、リンクがアクティブになったときにリンクのスタイルを変更できます。
ここで例を参照してください: http://www.w3schools.com/css/tryit.asp?filename=trycss_link
a:link {color:#FF0000;} /* unvisited link */
a:visited {color:#00FF00;} /* visited link */
a:hover {color:#FF00FF;} /* mouse over link */
a:active {color:#0000FF;} /* selected link */
したがって、 a:active は、要求したことを実行するために必要なものです。必要なすべてのスタイリングをそこに入れることができます。