jQuery でこのようなイベントを処理するロングクリック プラグインの開発を探していましたが、多くの調査の結果、最良の方法を見つけました。以下のプラグインを作成しました。大きなファイルではありませんが、必要なものをカバーしています。その分問題点はありますが…
$(function($) {
var holdTimer;
$.fn.longclick = function( handler, time ) {
if(time == undefined) time = 500;
return this.mouseup(function(){
clearTimeout(holdTimer);
}).mousedown(function(){
holdTimer = window.setTimeout(handler, time);
});
};
$.fn.longclick.defaultTime = 500;
}(jQuery));
以下に、それをテストするページがあります。
// some markup
<input type="button" name="button3" id="button3" value="1500ms">
// and... the script itself
$("#button3").longclick( function() {
var initial_text = $("#button3").val();
console.log( $(this) );
var initial_id = $(this).attr("id"); console.log( initial_id);
var initial_html = $(this).html(); console.log(initial_html);
$("#button3").replaceWith('<input type="textbox" id="" value=' + initial_text + '>');
}, 1500);
さて、私のプラグインの問題は、それが何を意味するのかわからないこと$(this)
です。必要なボタンではなく、ウィンドウ自体を返すconsole.log
と...また、. どうすればこれを行うことができますか?$(this)
initial_id
initial_html
undefined
更新:私のinitial_html
場合、変数は<input type="button" name="button3" id="button3" value="1500ms">
. とjQuery.html()
言って思うように動かない$(this).html()
。要素の HTML を取得するにはどうすればよいですか?