【问题标题】:jquery ui autocomplete with delegatejquery ui自动完成与委托
【发布时间】:2010-04-16 05:04:58
【问题描述】:

我已经根据文档设置了 JQuery UI 自动完成功能,它适用于呈现到页面的任何带有 class="tag-item" 的输入。但是,用户可以通过 JS 将输入添加到 dom 中,因此我需要一种方法将自动完成绑定到使用委托的新动态创建的输入。我不确定如何设置它,任何想法都将不胜感激。

谢谢

【问题讨论】:

  • 在我看来,这个解决方案有味道,但我最终只是将代码包装在一个函数中,并在将新输入注入 DOM 后在完整函数中调用该函数。据我所知,我必须更改自动完成的代码才能使其与委托一起使用。我 100% 确定有更好的方法,这就是为什么这是评论而不是标记为答案的原因。

标签: jquery jquery-ui delegates


【解决方案1】:

您可以委托一个 'focusin' 事件来设置您的输入字段。

See this post

【讨论】:

【解决方案2】:

对于它的价值,这是我最终使用的:

$('#some-container').delegate('input.to-autocomplete', 'focus', function(e) {
    $(this).autocomplete({
        source: autocomplete_url
        /* etc, etc */
    });
});
$('#some-container').delegate('input.to-autocomplete', 'blur', function(e) {
    var target = $(this);
    if (target.hasClass('ui-autocomplete-input')) {
        target.autocomplete('destroy');
    }
});

我希望它能减轻浏览器的负担,因为我会自动完成(可能)数百个元素,否则自动完成结果会开始堆积。

【讨论】:

    【解决方案3】:

    对我来说,以下工作:

    $('#autocomplete').on('focusin', 'input', function(){
        $(this).autocomplete({
    
        });
    });
    

    【讨论】:

      【解决方案4】:

      我尝试过,但似乎无法成功,这是我的尝试:

      http://jsfiddle.net/uGdm2/

      【讨论】:

      • 只是补充:jsfiddle.net/uGdm2/3 似乎比你引用的版本更好:)
      • 我不认为它更好,不。
      • 你有几个错误:jsfiddle.net/uGdm2/65 javascript:void(0) 在第一个函数之后比 javascript:false 你错过了一个 ) 效果更好。而且你不想克隆(true),试试clone(),它不会克隆事件。
      猜你喜欢
      • 1970-01-01
      • 2011-05-31
      • 1970-01-01
      • 1970-01-01
      • 2011-07-23
      • 1970-01-01
      相关资源
      最近更新 更多