Можно ли вызывать действие при уничтожении узла?
Привет, можно привязывать события на разные действия: click, blur, change и т.д., а можно привязать функцию, которая будет вызываться при уничтожении узла?
|
(function ($) { var _ = $.fn.remove; $.fn.remove = function ( expr ) { this.trigger( "remove" ); return _.call( this, expr ); }); })(jQuery); $(element).bind( "remove", handler ); |
(function($) { var _ = $.fn.remove; $.fn.remove = function ( expr ) { alert(); this.trigger( "remove" ); return _.call( this, expr ); }; })(jQuery); $(document).ready(function() { $('#deleteMe').bind('remove', function(){alert('AAA')}) $('#deletor').click(function(){$('#container').empty()}); }); И html: <div id="container"> <p id="deleteMe">text</p> </div> <button id="deletor">Удалить</button> JQuery подключен. Что я не так делаю? |
remove() надо вызывать, а не empty().
|
(function($) { var _ = $.fn.remove; $.fn.remove = function ( expr ) { this.trigger( 'remove' ); alert('alert #1'); return _.call( this, expr ); alert('alert #3'); }; })(jQuery); $(document).ready(function() { $('#deleteMe').bind('remove', function(){alert('alert #2')}) $('#deletor').click(function(){$('#container').remove()}); }); Вызывается только первый алерт, и нет никаких ошибок. p.s. вау, этим постом меня повысили до аспиранта) |
В своём коде я случайно поставил лишнюю скобку, из-за этого и не работало. Сейчас всё ОК:
<html> <head> <script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"> </script> </head> <body> <div id='foo'> Lorem ipsum </div> <a href='javascript://' onclick='$("#foo").remove();'> Удалить! </a> <script type="text/javascript"> (function ($) { var _ = $.fn.remove; $.fn.remove = function ( expr ) { this.trigger( "remove" ); return _.call( this, expr ); }; })(jQuery); $( "#foo" ).bind("remove", function () { alert( "Remove!" ); }); </script> </body> </html> |
Ты просто Бог! Спасибо огромное, от меня жирный плюс)
Дело было не в скобке. Я заметил ее, еще и подумал, что это защита от дурака, т.е. тупого копирования. Вся суть была в расположении скрипта, он у меня срабатывал, когда еще документ не был полностью загружен.. да, вот так опростоволосился) |
Часовой пояс GMT +3, время: 17:18. |