I've been looking for developing a long-click plugin to handle such an event in jQuery, and after much research, I've found the best method. I've created the plugin below. It is not a large file, but it covers what I need. There are some problems with it though...

```
$(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));

```

Below, I have the page that tests it:

```
// 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);

```

Now, the problem of my plugin seems to be that it doesn't know what `$(this)` means. When I `console.log` the `$(this)` it return the window itself, not the button that I need... Also, `initial_id` and `initial_html` are *`undefined`*. **How can I get this done?**

**UPDATE:** The `initial_html` variable should be, in my case `<input type="button" name="button3" id="button3" value="1500ms">`. The `jQuery.html()` won't work as I expect by saying `$(this).html()`. **How can I get the element's HTML?**