在ajax事件

时间:2015-04-28 01:17:52

标签: javascript jquery ajax geocoding geocomplete

我有一个按钮,可以添加一个输入框,您可以在其中键入地址。对于地址,我正在使用geocomplete plugin。在所有未使用ajax生成的输入框中,地理填充工作正常。如果输入是由ajax生成的,那么它不会。

这是我生成输入框的代码:

$('.add-drop').on('click', function(){  
     $.ajax({
         url : '/ajax/get-location-input',
         success : function(data){   
            $('#additional-drop').append(data);
        } 
    }); 
});

这是我的地理完整代码:

$(".get-location").geocomplete({
    details : "form",
    types : ["geocode", "establishment"]
  }).bind("geocode:result", function(event, result){  
      console.log(result);
});

问题不在于班级。我试图做$(".get-location").on("geocomplete"...之类的事情,但它没有用。任何的想法?感谢

1 个答案:

答案 0 :(得分:2)

AJAX是异步(异步JavaScript和XML)这意味着它可能在主代码完成处理后执行

Hi

在这种情况下,data会先提醒,然后是geolocation。在您的情况下,甚至可能不会生成输入,因此$.ajax({ url: '$('#additional-drop').append(data);', success:function(data){ $('#additional-drop').append(data); $(".get-location").geocomplete({ details: "form", types: ["geocode", "establishment"] }); } }); 代码将看不到它们

正确的代码:

(function () {

    $.fn.addGeolocation = function () { this.geocomplete({ details: "form", types: ["geocode", "establishment"] }).bind("geocode:result", function(e, a){ console.log(a); }); }

    $.get('/ajax/get-location-input', function (a) {
        $('#additional-drop').append(data);

        $(".get-location").addGeolocation();

    });

    /* You may or may not need this */
    window.onload = function () { $(".get-location").addGeolocation(); }

}());

将从服务器提取数据后运行代码

这是我建议的方法:

ringer