あなたができることはsetTimeout
、さまざまなマウスイベント中に遅延チェックを使用することです。jQuery を組み込ん$.data()
でイベント間 (各要素) のタイムアウトを保存すると、すべてを達成するのに役立ちます。次に例を示します。
HTML:
<ul id="menu">
<li><a href="#" onclick="return false;" class="test"></a></li>
<li><a href="#" onclick="return false;" class="test"></a></li>
</ul>
JS:
var mousepress_time = 1000; // Maybe hardcode this value in setTimeout
var orig_message = "Click Here"; // Remove this line
var held_message = "Down"; // Remove this line
$(document).ready(function () {
$(".test")
.html(orig_message) // Remove this line
.on("mousedown", function () {
console.log("#########mousedown"); // Remove this line
var $this = $(this);
$(this).data("checkdown", setTimeout(function () {
// Add your code to run
$this.html(held_message); // Remove this line
}, mousepress_time));
}).on("mouseup", function () {
clearTimeout($(this).data("checkdown"));
console.log("#######mouseup"); // Remove this line
$(this).html(orig_message); // Remove this line
}).on("mouseout", function () {
clearTimeout($(this).data("checkdown"));
console.log("#######mouseout"); // Remove this line
$(this).html(orig_message); // Remove this line
});
});
デモ: http://jsfiddle.net/7jKYa/10/
ホバリングも組み込んでいるので、これには他にも多くのことがありますが、ほとんどの場合、これはあなたが望むことだと思います。
必要に応じて簡単にプラグインに変換できますが、それ以外の場合は単独で問題なく動作すると思います。これが役立つことを願っています!