我使用的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()
循环内的变量,因为我需要为我拥有的每个数据点创建一个唯一的变量。数据点的数量根据检索的结果而变化,我没有尝试创建动态命名的变量,如marker1
,marker2
等
答案 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()
。