我想将从textarea获取的字符串值传递给focus()和blur(), 但为什么我会得到[对象对象]?
我使用each()成功获取每个textarea的字符串值,并将字符串存储在var - var value_default = $this.val();
然后我将此var
传递给$this.focus(function (value_default) {..})
- 我传不正确吗?
如果我发出警告value_default
,我会收到[对象提示] - 提醒(value_default);
以下是整个代码,如果你需要看到它......
$(".autohide").each(function(){
/* set the variable and store its value */
var $this = $(this);
var value_default = $this.val();
var parent_autohide = $this.parents('form');
var parent_button = $('input[type=submit]',parent_autohide).parents("div:.item-form").hide();
var parent_marginbottom = parseInt($this.parents("div:.item-form").css("marginBottom"));
$this.parents("div:.item-form").css({margin:'0px'});
alert(value_default); // I will get the string value of each textarea element
$this.focus(function (value_default) {
alert(value_default); // I will get [object object]
var $this = $(this);
$this.elastic();
$this.parents('div:.item-form').css({margin:'0px 0px '+parent_marginbottom+'px 0px'});
var $this_parent = $this.parents('form');
var $this_button = $('input[type=submit]',$this_parent).parents("div:.item-form").show();
}).blur(function(value_default){
alert(value_default); // I will get [object object]
var $this = $(this);
var value_current = $this.val();
if ( value_current == value_default)
{
$this.css({ height: 'inherit'});
$this.parents('div:.item-form').css({margin:'0px'});
var $this_parent = $this.parents('form');
var $this_button = $('input[type=submit]',$this_parent).parents("div:.item-form").hide();
}
});
});
非常感谢。
编辑:
我知道IE上的错误是什么原因 -
$this.css({height: 'inherit'}); // this line will create error on IE
$this.css({height:''}); // IE likes this
所以“继承”有什么问题,IE不会像其他浏览器那样接受它!??
答案 0 :(得分:1)
正如评论者所说,你创建的处理焦点和模糊的函数有第一个参数(事件参数)定义为value_default,它覆盖你声明更高的那个。
所以如果你这样做它应该有效:
.focus(function(){
和.blur(function(){
因此,您应该能够访问之前声明的value_default,因为它仍在范围内且不被函数参数覆盖。