JQuery .bind () правильный формат - PullRequest
0 голосов
/ 10 сентября 2011

У меня есть этот код -

jQuery('.wymeditor').wymeditor( {
    html: '<p>Hello, World!<\/p>',
    postInit: function(wym) {
         var html = "<li class='wym_tools_newbutton'>"
                 + "<a name='NewButton' href='#'"
                 + " style='background-image:"
                 + " url(js/wymeditor/img/media.png);'"
                 + " title='Insert an image' >"
                 + "</a></li>";
       jQuery(wym._box).find(wym._options.toolsSelector + wym._options.toolsListSelector).append(html);
       jQuery(wym._box).find('li.wym_tools_newbutton a').click(function() {

       jQuery('#modal').show().css( { 'left': (winW-980)/2+'px', 'top': '100px' } ).load('admin_list_media.php');

                jQuery('.imgname').bind('change',function(){

                alert('123');

                var InsertImg = '#'+jQuery(this).attr('id');

                wym.insert('<img src="uploads/'+jQuery(InsertImg).val()+'" />');

                jQuery('#modal').empty().hide();

             });
            return(false);
            } );
            }
        } );

, который добавляет новую кнопку в редактор wym.Откроется модальное окно, содержащее изображения, идея состоит в том, чтобы выбрать изображение и вставить в редактор Wym.Работает, если я использую jQuery('.imgname').live('change',function(){ ..., но не, если я использую jQuery('.imgname').bind('change',function(){, проблема заключается в том, что я должен использовать .bind (), потому что обработчик события изменения становится связанным каждый раз, когда открывается модальное окно, и поэтому я дублирую вставку изображения каждый раз, когда мне говорят, чтобы заменить.live () с .bind (), но он не работает (хорошо в моем коде).Предложения, пожалуйста

Ответы [ 2 ]

1 голос
/ 10 сентября 2011

Прежде всего: почему вы не используете live, а делаете один раз при загрузке вашей страницы?Вы говорите: «Я должен использовать bind, потому что обработчик событий связывается каждый раз ...», но это звучит странно.Обработчик событий связывается каждый раз , потому что вы используете bind, а не наоборот.

В противном случае быстрое и грязное решение будет:

$(".imgname").unbind("change").bind("change", function () {
    // ...
});

Гораздо лучшим решением (опять же, без live) был бы плагин hasEventListener.Прочитайте документацию или поиграйте с песочницей в JSFiddle .

0 голосов
/ 15 сентября 2011

Решил, переместив вставку за пределы секции обмена

...