jQuery - копирование обработчиков событий из <input>в <div>один элемент в другой - PullRequest
2 голосов
/ 04 августа 2011

Я не верю, что подобные существующие вопросы отвечают на этот вопрос.

Я разрабатываю плагин, который превратит <input type='checkbox' /> в <div> с двумя состояниями переключения.Основная идея для использования:

$('div .checkboxContainer').prettyBox();

Код psuedo для самого плагина:

$.fn.prettyBox = function(){
    return this.each(function(){
        $(this).find(':checkbox').each(function(){
           .. grab all event handlers on the current <input>
           .. create a new <div>
           .. attach all of the <input>'s event handlers to the <div>
           .. hide the <input>
           .. place the <div> where the <input> used to live
        });  
    };
};

Другие, кто задавал похожие вопросы, были связаны с копированием отдельных событий, таких какclick обработчик.Чтобы поддерживать гибкость плагинов, я думаю, что мой код перебирает все, что связано с входом, и копирует его.

Ответы [ 2 ]

4 голосов
/ 04 августа 2011

Попробуйте это

$.fn.prettyBox = function(){
    return this.each(function(){
        $(this).find(':checkbox').each(function(){
           //Grabs all the events
           var events = $(this).data("events");
           var $div = $("<div />");

           //Loop through all the events
           $.each(events, function(i, event) {
             //Loop through all the handlers attached for a event
             $.each(event, function(j, h) {
               //Bind the handler with the event 
               $div.bind(i, h.handler);
             });
           });

           $(this).hide().after($div);
        });  
    };
};
1 голос
/ 04 августа 2011

Я думаю, что если события также связаны с использованием jQuery, вы можете получить все события, используя $ ('# elem'). Data ("events")

Soure: /1573662/jquery-naiti-obrabotchiki-sobytii-zaregistrirovannyh-s-obektom

...