Javascript 在生成的元素上绑定事件并获取其当前状态
这里有一个插件,它绑定元素上的Javascript 在生成的元素上绑定事件并获取其当前状态,javascript,jquery-plugins,closures,jquery,Javascript,Jquery Plugins,Closures,Jquery,这里有一个插件,它绑定元素上的单击事件,它生成一个带有的容器,然后我在这个新的上绑定一个按键事件,一切正常,但在按键处理程序中,我只能获得文本()的状态.length从初始单击时开始 如何获取onKeyPress函数以获取按键时的状态 $.fn.pluginTemp = function(options){ var defaults = { editContainer:"<div class='editContainer'><textarea&g
单击事件,它生成一个带有
的容器,然后我在这个新的
上绑定一个按键事件,一切正常,但在按键处理程序中,我只能获得文本()的状态.length
从初始单击时开始
如何获取onKeyPress函数以获取按键时
的状态
$.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)
}()
})
})
}
$.fn.pluginTemp=函数(选项){
var默认值={
编辑容器:“”,
maxChar:20,
onKeyPress:function(){
console.log($(“.editContainer>textarea”).text()
}
}
var options=$.extend(默认值,选项);
返回此。每个(函数(i,e){
变量el=$(e),initText
el.bind(“单击”,函数(){
initText=el.text();
el.parent().append(options.editContainer);
el.parent().find(“.editContainer>textarea”).html(initText);
//这个函数不记得定义它时的状态吗?它是在按键上的吗?
返回函数(){
el.parent().find(“.editContainer>textarea”).bind(“keypress”,options.onKeyPress)
}()
})
})
}
您可以尝试:
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)
}()
})
})
尚未测试抱歉您可以尝试:
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)
}()
})
})
还没有测试抱歉我有问题
而不是通过.html()
方法获取当前值,
我使用了.val()
原因如下:
当在
上使用.html()
方法时,它只查看文本区域的初始状态,当您使用.val()
时,它会对最新的值进行采样。我遇到了问题
而不是通过.html()
方法获取当前值,
我使用了.val()
原因如下:
.html()
方法在
上使用时,仅查看文本区域的初始状态,当您使用.val()
时,它会对最新的值进行采样。您可能想检查按键上的.live()方法-live
?另外,有没有一种方法可以通过闭包来实现这一点?您可能需要检查按键上的.live()方法-live
?另外,有没有一种方法可以通过闭包来实现这一点?如果使用.live(),则会得到相同的结果,因为函数是在触发事件时执行的。换句话说,在keypress事件中使用它会在当时生成html。但是,嘿,.val()也可以工作,而且更简单:)如果使用.live(),则会得到相同的结果,因为函数是在触发事件时执行的。换句话说,在keypress事件中使用它会在当时生成html。但是,嘿,.val()也可以工作,而且更简单:)