【问题标题】:jQuery .on? Manipulating DOM after Ajax [duplicate]jQuery.on?在 Ajax 之后操作 DOM [重复]
【发布时间】:2012-07-09 02:12:51
【问题描述】:

可能重复:
Bind jQuery UI autocomplete using .live()

我似乎无法弄清楚这一点。我相信我将不得不使用 .load() 或 .on() 但我不知道如何使它们中的任何一个工作。

所以我有一个有 3 行的表。当用户填写 3 行时,我想为他们提供更多。

一旦他们填写了最后一行,这个脚本就会被调用。

function addNewRow(id)
{
    var qty = $('#qty' + id).val();
    if (qty > 0)
    {
        $('#quickaddtable').append('<?php echo createRow(($i+1)); ?>');
    }
}

问题是我正在使用自动完成功能,而对于新创建的行,它不起作用。我知道我需要重新加载 DOM,但我只是迷失了如何轻松做到这一点。

$(function(){  

    $(".id").autocomplete({ 
            //My Code
    });  
}); 

我确信这是一个简单的答案,但是几乎所有示例都显示 .on("click",...)

【问题讨论】:

  • Bind jQuery UI autocomplete using .live() 的可能副本 also applies to .on()
  • .id 指的是什么 - 是每行内的一个字段吗?
  • id 只是一个自动递增的数字来识别每一行 ...
  • 尼尔明白了。我全都看错了。我需要将 .on 与自动完成而不是 addNewRow 函数一起使用。所以我改变了这个 $j(function(){ //attach autocomplete $j(document).on("keyup.autocomplete", '.autocomplete', function(){ $j(this).autocomplete({ //My代码 }); });
  • 我如何相信尼尔回答了这个问题?

标签: jquery


【解决方案1】:

尼尔明白了。我全都看错了。

我需要使用带有自动完成功能的 .on 而不是 addNewRow 函数。

所以我改变了这个

$j(function(){  

    //attach autocomplete  
    $j(document).on("keyup.autocomplete", '.autocomplete', function(){
        $j(this).autocomplete({
                   //My Code
            });
    });

})

感谢大家的帮助。我花了几个小时看这个,几分钟后你们再次回复谢谢。由于尼尔没有发布答案,我有什么办法可以给他信任吗?

【讨论】:

    【解决方案2】:

    这里的问题是当使用$('.id') 选择器时,新行还不存在。当您添加更多行时,匹配“.id”的新元素不会绑定到您之前调用的方法。

    我可能只是在插入后重新绑定,而不是尝试绑定到文档 ($(document).on('event'))。所以它会是这样的:

    $('#quickaddtable').append( ... );
    $('.id').autocomplete("destroy");
    $('.id').autocomplete({ ... });
    

    【讨论】:

    • 我不想发帖。 jQuery 监视行数并相应地添加它们。不需要 post 或 ajax。我想我可以创建并调用一个新页面,但是 .append 非常适合添加行。只是阻止自动完成工作
    • 我明白了 - 所以你的服务器上有一个 PHP 页面,其中包含这个 js。我假设这是一个独立的脚本,您试图在其中从客户端执行 PHP。我现在知道了。我会更新我的答案。
    • 尼尔实际上在他的评论中指出了这一点。我看错了。当我需要使用自动完成功能时,我试图使用 addRow 功能。现在我只需要用 on 而不是 live 来写他的答案
    猜你喜欢
    • 2014-11-01
    • 2014-02-14
    • 2016-06-04
    • 2011-12-02
    • 1970-01-01
    • 2013-08-27
    • 1970-01-01
    • 2014-09-25
    • 1970-01-01
    相关资源
    最近更新 更多