TypeError:this._on不是函数

时间:2015-04-24 16:24:08

标签: jquery

如何解决此问题?我已经在这个问题上苦苦挣扎了4个多小时。

  

TypeError:this._on不是函数

我的代码在那里

this.input = $( "<input>" )
      .appendTo( this.wrapper )
      .val( value )
      .attr( "title", "" )
      .addClass( "custom-combobox-input ui-widget ui-widget-content ui-state-default ui-corner-left" )
      .autocomplete({
        delay: 0,
        minLength: 0,
        source: $.proxy( this, "_source" )
      })
    this._on( this.input, {
      autocompleteselect: function( event, ui ) {
        ui.item.option.selected = true;
        this._trigger( "select", event, {
          item: ui.item.option
        });
      },

3 个答案:

答案 0 :(得分:11)

我知道这是一个古老的死线程,但对于其他遇到过这种情况的人来说,因为我一直在寻找这个错误出现的原因。标记为正确答案的答案不正确。提问者询问jquery组合框插件,这是问题中代码片段的来源。错误发生在

this._on

在这种情况下,“this”指的是jquery-ui小部件对象,从版本1.9.0开始,它有一个名为“_on”的方法。最可能的问题是提问者要么不包括jquery-ui,要么使用1.9.0之前没有该方法的jquery-ui版本。如果出现此错误,请确保已加载jquery-ui并打开jquery-ui文件并搜索“_on”如果找不到问题。

答案 1 :(得分:-1)

正如上面提到的Rory,this._on()不是函数。试试this.on(),即删除下划线。

您还可以查看下面的链接,了解jQuery中on()的正确用法信息。

jQuery API on()

答案 2 :(得分:-3)

正如其他人所提到的,它是on(),而不是_on()。也可以使用$(this).on而不是this.on()来确保它是一个jquery对象。如果你发现自己做了很多(这个),可以将它存储在一个可以重用的变量中。