将值传递给If()循环

时间:2011-10-22 18:20:46

标签: javascript jquery google-maps dom google-maps-api-3

我使用的jQuery插件有一个事件处理程序,其返回函数将HTMLImageElement对象作为事件属性e.imageTarget提供给我。此e.imageTarget的来源来自特定<img>内的一群<div>

问题:我想将一对数字42.345573, -71.098326传递到下面显示的代码中的if()循环中。我怎么能这样做?

我失败的尝试: 创建一个包含2个值的<div>,并将其放在<img>被抓取之后。然后在if()循环中,使用.next()上的jQuery <img>来选择<div>。但是我的jquery选择代码似乎不起作用!我使用console.log(e.imageTarget.previous());尝试了此操作并收到错误Uncaught TypeError: Object #<HTMLImageElement> has no method 'previous'。是否可以使用jQuery DOM横向选择器?

抓起一群Imgs
<img src="http://www.google.com/images/experiments/nav_logo78.png">
<img src="http://www.google.com/images/experiments/nav_logo78.png">
<img src="http://www.google.com/images/experiments/nav_logo78.png">
<div id="lat">42.345573</div>
<div id="lng">-71.098326</div>

e.imageTarget: <img style=​"display:​ block;​ width:​ 170px;​ height:​ 323px;​ position:​ absolute;​ top:​ 0px;​ left:​ 130px;​ opacity:​ 1;​ " src=​"http:​/​/​www.google.com/​images/​experiments/​nav_logo78.png" width=​"170" height=​"323">​

代码:

Galleria.ready(function(options) {
    // Load Streetview after image related to Streetview has finished loading
    this.bind("loadfinish", function(e) {
        if(e.imageTarget.src.search('png') != -1) {
            console.log(e.imageTarget);
            // Create Street View
            var fenway = new google.maps.LatLng(42.345573,-71.098326);
            var panoOptions = {
                position: fenway
          };
            var panorama = new google.maps.StreetViewPanorama(document.getElementById("streetview"), panoOptions);
        }
    });
});

其他信息 我不能简单地创建一个变量,将其设置为我想要的值并使用if()循环内的变量,因为我需要为我拥有的每个数据点创建一个唯一的变量。数据点的数量根据检索的结果而变化,我没有尝试创建动态命名的变量,如marker1marker2

1 个答案:

答案 0 :(得分:1)

如果你想使用jQuery,你可以添加属性到包含&#39; lat&#39;的img元素。和&#39; lng&#39;值。

<img src="path/image.png" data-coordinates="{lat:42,lng:-71}">

然后,使用jQuery:

//pass your image selector, just using 'img' for this example's sake
var coordinates = $('img').data("coordinates");
// coordinates.lat = 42
// coordinates.lng = -71

如果您不想使用jquery,可以添加&#39; lat&#39;和长值作为img元素的单独数据属性,然后使用javascript的getAttribute函数来获取值。

<img src="path/image.png" data-lat="41" data-lng="-71">

然后,使用javascript:

e.imageTarget.getAttribute("data-lat") // '42'
e.imageTarget.getAttribute("data-lng") // '-71'

此外,您可能会在e.imageTarget.previous()收到错误,因为它不是jQuery对象。您需要执行$(e.imageTarget).previous()