【问题标题】:Passing Values into a If() Loop将值传递到 If() 循环中
【发布时间】:2011-10-22 18:20:45
【问题描述】:

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

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

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

抓取的一堆图片:

<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: &lt;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"&gt;​

代码:

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

【问题讨论】:

  • 不明白为什么我被否决了......这是一个重复的问题还是我没有尝试就要求免费代码?

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


【解决方案1】:

如果你想使用 jQuery,你可以在 img 元素中添加包含 'lat' 和 'lng' 值的属性。

<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,可以在 img 元素上添加 'lat' 和 'long 值作为单独的数据属性,然后使用 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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-19
    • 1970-01-01
    • 1970-01-01
    • 2019-02-05
    • 1970-01-01
    • 1970-01-01
    • 2019-06-28
    • 1970-01-01
    相关资源
    最近更新 更多