связать событие с сгенерированным элементом и получить его текущее состояние - PullRequest
1 голос
/ 22 сентября 2010

Вот плагин, который связывает событие click с элементом, который генерирует контейнер с <textarea>, а затем я связываю событие keypress с этим новым <textarea>, все в порядке, но внутри обработчика keypress я могу получить состояние text().length только с того момента, когда произошла начальная click.

Как получить функцию onKeyPress для получения состояния <textarea> в то время, когда keypress произошло?

$.fn.pluginTemp = function(options){
    var defaults = {
            editContainer:"<div class='editContainer'><textarea></textarea></div>",
            maxChar:20,
            onKeyPress:function(){
                    console.log($(".editContainer>textarea").text())
               }

     }
    var options = $.extend(defaults,options); 
    return this.each(function(i,e){
        var el = $(e), initText
        el.bind("click", function(){
            initText = el.text();
            el.parent().append(options.editContainer);
            el.parent().find(".editContainer>textarea").html(initText);
              // isn't this function remembering the state for when its is defined?  which is on keypress?          
               return function(){
                el.parent().find(".editContainer>textarea").bind("keypress",options.onKeyPress)
            }()

        })
    })
}

Ответы [ 2 ]

1 голос
/ 27 сентября 2010

Вы можете попробовать:

return this.each(function(i,e){
            var el = $(e), initText
            el.live('click', function() {
                initText = el.text();
                el.parent().append(options.editContainer);
                el.parent().find(".editContainer>textarea").html(initText);
                  // isn't this function remembering the state for when its is defined?  which is on keypress?          
                   return function(){
                    el.parent().find(".editContainer>textarea").bind("keypress",options.onKeyPress)
                }()

            })
        })

еще не проверял извините

0 голосов
/ 03 октября 2010

У меня проблема,

Вместо получения текущего значения методом .html() я использовал .val()

И вот почему: метод .html() при использовании<textarea> смотрит только на начальное состояние textarea, когда у вас есть .val(), он выбирает самое текущее значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...