jQuery调用函数内部

时间:2017-04-27 15:36:04

标签: javascript jquery

当我调用功能国家/地区更改时显示错误无法读取属性' geometry'未定义如何解决此问题请帮助我。并感谢最后的答案和编辑。抱歉我的英语不好。

$(function(){
        var autocomplete;
        var geocoder;
        var input = document.getElementById('cityzip');

        autocomplete = new google.maps.places.Autocomplete(input);
    function search(){
        var location = autocomplete.getPlace();
        geocoder = new google.maps.Geocoder();
        var lat = location['geometry']['location'].lat();
        var lng = location['geometry']['location'].lng();
        /*var data = {
            lng: lng,
            lat: lat
        }*/
        alert("search clicked");
        var pettype = [];
        var dogbreed = [];
        var catbreed = [];
        var color = [];
        var sex = [];
        $(".pettype:checked").each(function(){
            pettype.push($(this).val());
        })
        $(".dogbreed:checked").each(function(){
            dogbreed.push($(this).val());
        })
        $(".catbreed:checked").each(function(){
            catbreed.push($(this).val());
        })
        $(".color:checked").each(function(){
            color.push($(this).val());
        })
        $(".sex:checked").each(function(){
            sex.push($(this).val());
        })
            var data = {
                lng: lng,
                lat: lat,
                kmrange: $("#kmrange").val(),
                country: $("#country").val(),
                pettype: pettype,
                dogbreed: dogbreed,
                catbreed: catbreed,
                color: color,
                sex: sex,
            }
            console.log(data);
        }
        $("#location").click(function(){
            search();
        })
        $('#country').on('change', function() {
          search();
        })

1 个答案:

答案 0 :(得分:3)

您无法从$(function(){})块之外调用搜索方法,因为范围在javascript中的工作方式。但是,您可以这样做:

var myNamespace = {};
$(function() {
    myNamespace.search = function() {};
});

然后只要$(function(){})已经执行,你就可以从任何地方调用myNamespace.search()。