The following code will trigger alert twice. Looks like empty() does not remove events as promised.
Looks like remove works(see commented code).
Is it a Jquery bug? or it's only me.
<div id = 'cc'>
<div id="div1">
<button class="this2">button 2</button>
</div>
</div>
<script>var c = $('#div1');
var cc=0;
c.on('click','.this2', function() { cc++; alert(cc);});
c.empty().off("*");
c.append('<button class="this2">button 2</button>');
c.on('click','.this2', function() { cc++; alert(cc);});
/*
c.remove();
c = $('<div id="div1"><button class="this2">button 2</button></div>');
$('#cc').append(c);
c.on('click','.this2', function() { cc++; alert(cc);});
*/</script>