оператор .bind() не работает в плагине простого подтверждения jQuery

#jquery-plugins #jquery

#jquery-плагины #jquery

Вопрос:

Кто-нибудь, кто использовал плагин простого подтверждения jQuery, сталкивался с этой проблемой — кнопка, к которой привязано поле подтверждения, теряет исходное событие нажатия после первого нажатия? Мне пришлось изменить код плагина на это, чтобы заставить его работать. Разница здесь между .bind и .click . Кто-нибудь может объяснить, почему? Пожалуйста. дайте мне знать, если мой вопрос неясен. Спасибо!

Исходный код плагина:

      // Re-bind old events
            var rebindHandlers = function () {

                if (target._handlers != undefined) {
                    jQuery.each(target._handlers, function () {
                        //this is the difference
                        $target.bind(type, this);   
                    });
                }
            }
  

Изменен (рабочий) код:

     // Re-bind old events
            var rebindHandlers = function () {

                if (target._handlers != undefined) {
                    jQuery.each(target._handlers, function () {
                        //this is the difference
                        if(type == 'click')
                            $target.click(this);
                        else {
                            $target.bind(type, this);   
                        }
                    });
                }
            }
  

Ответ №1:

Попробуйте использовать некоторые оповещения, чтобы увидеть, что происходит…

 // Re-bind old events 
var rebindHandlers = function () {
            if (target._handlers != undefined) {
                jQuery.each(target._handlers, function () {
                    if(type == 'click')
                        alert('$target.click('   this   ');');
                        //$target.click(this);
                    else {
                        alert('$target.bind('   type   ', '   this   ');');
                        //$target.bind(type, this);   
                    }
                });
            }
        }