访问jQuery document.ready()中的JavaScript变量

时间:2014-06-25 19:21:02

标签: javascript jquery function

我想访问变量lat和var lng,如下面的代码所示,请告诉我在.load中访问这些变量的正确方法

 $(document).ready(function(){
   function getLocation() {
     if (navigator.geolocation) {
       navigator.geolocation.getCurrentPosition(showPosition);
     } else { 
       x.innerHTML = "Geolocation is not supported by this browser.";
     }
   }    
   function showPosition(position) {
     var lat= position.coords.latitude; 
     var lng= position.coords.longitude;    
   }    
   $(".content").load("page1.php?latitude="+lat+"&longitude="+lng);
 });

我想调用var lat和var lng,如下面的代码所示,请告诉我在.load中调用这些变量的当前方法

2 个答案:

答案 0 :(得分:2)

getCurrentPosition函数是异步的 - 稍后调用回调,并继续执行函数的其余部分。

因此,.load的调用应在showPosition函数本身内进行。

请勿忘记,您还必须致电getLocation()以启动整个过程。

为方便起见,这是一个未经测试的插件包装器,我刚刚将其{@ 1}}调用转换为Promise接口:

getCurrentLocation

用法:

(function($) {
    $.geolocate = function(options) {
        var def = $.Deferred();
        if (navigator.geolocation) {
            navigator.geolocation.getCurrentPosition(def.resolve, def.reject, options);
        } else {
            def.reject("location not available");
        }
        return def.promise();
    };
})(jQuery);

请参阅http://jsfiddle.net/alnitak/SD79R/

答案 1 :(得分:-1)

您可以将它们移至.ready()的范围:

$(document).ready(function(){

    var lat;
    var lng;

    function getLocation() {
        if (navigator.geolocation) {
            navigator.geolocation.getCurrentPosition(showPosition);
        } else { 
            x.innerHTML = "Geolocation is not supported by this browser.";
        }
    }    
    function showPosition(position) {
        lat= position.coords.latitude; 
        lng= position.coords.longitude;    
    }    
    $(".content").load("page1.php?latitude="+lat+"&longitude="+lng);
});