首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于动态输入id的jquery自动完成数据源

问基于动态输入id的jquery自动完成数据源
EN

Stack Overflow用户
提问于 2016-08-11 15:44:01
回答 1查看 417关注 0票数 0

我有一个带有自动完成jquery搜索的输入表单:

HTML :

代码语言:javascript
复制
<form class="pure-form" action="page.php" method="GET">
    <input name ='Jeu' id="search1">
    <input type="submit" value="Go">
</form> 

JS :

代码语言:javascript
复制
$( document ).ready(function() {
    $(function() {
        $.widget( "custom.catcomplete", $.ui.autocomplete, {
            _create: function() {
              this._super();
              this.widget().menu( "option", "items", "> :not(.ui-autocomplete-category)" );
            },
            _renderMenu: function( ul, items ) {
              var that = this,
                currentCategory = "";
              $.each( items, function( index, item ) {
                var li;
                if ( item.category != currentCategory ) {
                  ul.append( "<li class='ui-autocomplete-category'>" + item.category + "</li>" );
                  currentCategory = item.category;
                }
                li = that._renderItemData( ul, item );
                if ( item.category ) {
                  li.attr( "aria-label", item.category + " : " + item.label );
                }
              });
            }
        });
    });         

    $(function() {
        var data1 = [ { label: "A1", category: "" },
            { label: "B1", category: "" } ];
        $( "#search1" ).catcomplete({
            delay: 0,
            source: data1
        });
    });

现在我有了第二个数据集:

代码语言:javascript
复制
    $(function() {
        var data2 = [ { label: "A2", category: "" },
            { label: "B2", category: "" } ];
        $( "#search2" ).catcomplete({
            delay: 0,
            source: data2
        });
    });

目的:动态地将输入id从"search1“改为"search2”,以便搜索"data2“而不是"data1”。

我设法用jquery更改了输入id:

代码语言:javascript
复制
$('input[name=Jeu]').attr("id","search2");

但 data1仍然用于搜索,而输入id已更改为"search2“!那是为什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-11 18:53:15

如果元素的id被更改,这并不意味着绑定到该元素的所有事件都将不再被触发。

您使用了以下代码

代码语言:javascript
复制
$( "#search1" ).catcomplete({
     delay: 0,
     source: data1
});

它将data1与搜索输入绑定在一起。现在,当您更改id时,绑定仍然保持不变。

我认为方法是首先更改绑定,然后更改id。这可能对你有用。

试试这样的东西。

代码语言:javascript
复制
function changeDataSet(){
  $( "#search1" ).catcomplete({
     delay: 0,
     source: data2
 });

 $('#search1').attr("id","search2");
}

并从任何按钮单击或任何其他事件调用此函数。

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38900869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档