Статьи

Используйте jQuery .Toggle () с Live или Bind

По сути, вы можете использовать Live и Toggle вместе, НО для кодирования лучших практик, которые вы не должны. И jQuery .Live (), и jQuery .Toggle () автоматически создают свои собственные события привязки к элементу. Это вызывает проблемы, когда они используются вместе, так как вам нужно будет дважды нажать кнопку, чтобы включить Toggle.

Чтобы обойти это, используйте событие Live (‘click’), а внутри события Toggle вы можете добавить команду .Trigger (‘click’) к концу вызова функции, например:

// Add sort functions on dynamic elements inserted into DOM $('.sort').live('click',JQUERY4U.sortClickListener); [code lang="js"] //function inside JQUERY4U namespace sortClickListener: function(){ // Find second class name var button = $(this).attr('class').split(' '); // Sort table $(this).toggle(function() { $('.item').tsort('.'+button[1],{order:'desc'}); }, function() { $('.item').tsort('.'+button[1]); }).trigger('click'); /*force the button to work with 1 click*/ }, 

Другим способом было бы использование метода .Data, но это было бы излишним и долгим путём решения головоломки.

 $(".reply").live('click', function () { var toggled = $(this).data('toggled'); $(this).data('toggled', !toggled); if (!toggled) { x1(); } else { x2(); } });