将jquery元素引用传递给vanilla javascript

时间:2012-02-23 16:59:17

标签: javascript jquery google-maps var

我正在尝试用javascript做一些非常简单的事情,但不能完全了解它。我不确定我应该将var地址传递给哪种格式。

$(function() {
    $('.latlng').each(function(){
        var address = $(this).html();
        getMap(address);
    });
});

function getMap(address) {
    var map = new google.maps.Map(mapDiv, {
        center: new google.maps.LatLng(address),
        ...
    });
}

当我将JQuery ref传递给普通javascript时出现错误: TypeError:'undefined'不是对象(评估'a.position = b')。任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:1)

如果我正确阅读并且您正确发布了此代码,则会将不存在的对象传递给getMap(),同时您希望传递地址对象。如果你纠正这个会怎么样?

jQuery实例就像所有其他实例一样只是普通的javascript对象,因此应该没有问题。

答案 1 :(得分:0)

您将变量latLng传递给getMap,但未设置其值。顶部的ready功能应如下所示:

$(function() {
    $('.latlng').each(function(){
        var address = $(this).html();
        getMap(this);
    });
});

或者,如果您尝试传递您设置的address变量,请将您的就绪函数看起来像这样:

$(function() {
    $('.latlng').each(function(){
        var address = $(this).html();
        getMap(address);
    });
});

答案 2 :(得分:0)

您的问题与jquery或javascript无关。 您将错误的数据传递到LatLng method

您需要将两个参数传递给LatLng方法:     ...

var mapDiv = $('#mapDiv')[0], // also make sure the div is a regular dom node
    lat = 7.1011123,
    lng = 4.6667566;

function getMap(address) {
    var map = new google.maps.Map(mapDiv, {
        center: new google.maps.LatLng( lat, lng ), // you must pass in two parameters
        ...
    });
}

如果您尝试从文本div获取LatLng坐标,则需要将字符串转换为浮点数。

假设您使用以下html:

<ul>
    <li class="latlng">7.4142335,3.1296874</li>
    <li class="latlng">8.4135039,-5.1256828</li>
    <li class="latlng">-14.4101158,-5.2810335</li>
</ul>

然后,这将是每个getMap()列表项运行.latlng的函数:

$('.latlng').each(function( i ){
    var address = $(this).text();
    address = address.split(','); // convert your text into an array

    // send in your lat and lng strings parsed as floats
    getMap(
        parseFloat( address[0] ),
        parseFloat( address[1] )
    );
});