类型错误:在函数中使用“ this”关键字的“ Not a function”

书面

我创建了以下功能。

function showAllSelectOpts(select)
{
  selectLength = select.children().length;
  select.attr('size',selectLength);
  select.css('height','auto');
  select.focusout(function(){
      select.attr('size','1');
  });
}

当在这样的select元素上直接调用showAllSelectOpts(mySelect);它时,它可以正常工作,但是在另一个函数中(如下所述)使用关键字“ this”调用时,它将返回错误。类型错误:select.children不是函数

$('select').on('focus',function(){
  showAllSelectOpts(this);
})  

这是范围问题还是什么,我该如何解决?

TJ人群

在事件处理程序中,this是对DOM元素的引用,而不是jQuery对象。但是您showAllSelectOpts希望它的参数是jQuery对象。

更改调用以将DOM元素包装为$()

showAllSelectOpts($(this));

...showAllSelectOpts自行更新

function showAllSelectOpts(select)
{
  select = $(select);                      // ***
  selectLength = select.children().length;
  select.attr('size',selectLength);
  select.css('height','auto');
  select.focusout(function(){
      select.attr('size','1');
  });
}

旁注:正如A.Wolff指出的那样,函数每次调用时都会新的 focusout处理程序附加到select上。你只想要一个

我将完全删除处理程序的这一部分,并用一个替换它focusout

function showAllSelectOpts(select)
{
  var selectLength = select.children().length;
  select.attr('size',selectLength);
  select.css('height','auto');
}
$('select')
  .on('focus',function(){
    showAllSelectOpts($(this));
  })
  .on('focusout', function(){
    $(this).attr('size', '1');
  });

另外请注意,我添加了一个var用于selectLengthshowAllSelectOpts(尽管实际上,你可以只取出完全可变); 没有一个,该代码就成为“隐含全球性恐怖”的 牺牲品(这是我贫乏的小博客上的一篇文章)确保声明您的变量。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

“ this”关键字的类型?

来自分类Dev

C ++函数的关键字?

来自分类Dev

的“ is”关键字是函数吗?

来自分类Dev

App Store关键字:使用“商标”关键字

来自分类Dev

如何使用IN关键字?

来自分类Dev

使用IN关键字查询

来自分类Dev

使用或过滤关键字

来自分类Dev

JavaScript 使用 (this) 关键字

来自分类Dev

@final 关键字的使用

来自分类Dev

创建函数时,关键字“ FUNCTION”附近的语法不正确

来自分类Dev

类型错误:意外的关键字参数

来自分类Dev

在DLL中使用默认关键字

来自分类Dev

javascript中使用IIFE的“ this”关键字

来自分类Dev

在JavaScript对象中使用'this'关键字

来自分类Dev

在MySQL中使用REFERENCES关键字

来自分类Dev

在Python中使用global关键字

来自分类Dev

在AutoHotKey中使用IfWinActive关键字

来自分类Dev

在C ++中使用C关键字

来自分类Dev

在Android中使用超级关键字

来自分类Dev

在MySQL中使用REFERENCES关键字

来自分类Dev

在Retrolambda中使用'this'关键字

来自分类Dev

在JavaScript对象中使用'this'关键字

来自分类Dev

在JavaScript中使用'this'关键字

来自分类Dev

在方法中使用“self”关键字

来自分类Dev

类型错误:“ndim”是此函数的无效关键字参数

来自分类Dev

类型错误:“数据”是此函数的无效关键字参数

来自分类Dev

在类中使用关键字this与多个构造函数

来自分类Dev

是否建议在函数中使用using关键字?

来自分类Dev

在函数中使用此关键字设置属性