jQuery load()将以前的元素保存在内存中?

时间:2015-06-02 20:50:08

标签: jquery

我有一个元素,我加载...

$("#pending").load("/pages/tipping/add-tips.php?pending=1&tip_comp=1");

每当选中一个单选按钮时,都会重新加载......

$(".comp_id").on("click",function(){
    var compID=$(this).val();
    $("#pending").load("/pages/tipping/add-tips.php?pending=1&tip_comp="+compID);
});

在这个加载的内容中是输入,点击链接后我循环浏览这些输入......

$("#submit").click(function(){
    $("input.stake").each(function(){
        alert("TEST");
    });
});

但是,每次重新加载内容时,它似乎都“记住”以前的加载。例如,假设有一个输入循环,在第一次加载页面时,我得到1个警报。

如果我然后更改输入,然后提交,我会收到2个警报,然后是3个等等。尽管实际上只有一个输入在那里。

造成这种情况的原因是什么?解决方案是什么?它让我有点疯狂。

编辑:

因此,如果我循环通过文件外部的输入,它知道只有1.只有当循环从加载的内容中完成时,它才会认为有超过1个。

由于

2 个答案:

答案 0 :(得分:0)

.load只是向目标元素添加内容。如果要替换它,可以使用.get

$.get("/pages/tipping/add-tips.php?pending=1&tip_comp="+compID, function(data) {
     $("#pending").replaceWith(data);
});

答案 1 :(得分:0)

 $(".comp_id").on("click",function(){
            var compID=$(this).val();

            $("input.stake").each(function(){
                $(this).remove();
               });

            $("#pending").load("/pages/tipping/add-tips.php?pending=1&tip_comp="+compID);
        });

每次点击都会执行此操作。一种解决方法可能是,删除现有输入并再次加载

document.caretRangeFromPoint