2013-03-07 12 views
0

我有一个用于在线阅读漫画的网站。当滚动到它时获取元素ID

HTML页面读的是:

<div id="listimages"> 
<img src="abc1.jpg" id="image1" /> 
<img src="abc2.jpg" id="image2" /> 
<img src="abc3.jpg" id="image3" /> 
<img src="abc4.jpg" id="image4" /> 
</div> 

我想被滚动到图像的ID。 当我正在查看时的示例img abc2.jpg我想要它的元素ID是#image2。

idnow = idnow_getted 

请大家帮帮我,谢谢大家!

+0

你想在'滚动'的'ID'?或“悬停”? – 2013-03-07 04:02:02

+0

如果所有图像都适合一个页面并且不需要滚动,该怎么办? – 2013-03-07 04:11:04

+0

重复http://stackoverflow.com/questions/5911138/jquery-trigger-function-when-element-is-in-viewport – TheHe 2013-03-07 04:16:24

回答

0

您可以比较窗口的滚动条和图像的顶部位置,以获取滚动到的图像的ID。

对于离,

$(window).scroll(function() { 

var winTop = $(this).scrollTop(); 
var $imgs = $('img'); 

$.each($imgs, function(item) { 
    if($(item).position().top <= winTop) 
     //get id here 

}); 
}); 
+0

all图片高于当前视口也是“选中”...不是一个真正的解决方案...看到 - > http://stackoverflow.com/questions/5911138/jquery-trigger-function-when-element-is-in-viewport – TheHe 2013-03-07 04:17:01

-1

用下面只是尝试,

JavaScript和jQuery的部分:

<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> 
<script type="text/javascript"> 
$(document).ready(function() { 
$('#listimages img').mouseover(function() { 
    alert(this.id); 
}); 
}); 
</script> 

HTML部分:

<div id="listimages"> 
<img src="abc1.jpg" id="image1" /> 
<img src="abc2.jpg" id="image2" /> 
<img src="abc3.jpg" id="image3" /> 
<img src="abc4.jpg" id="image4" /> 
</div> 

我认为这可以帮助您解决您的问题。

+1

鼠标悬停与滚动不同。 – 2014-09-23 14:48:55

0

有可能是在你想要的形象标识,并做进一步处理的两个方案,

第一种情形你想执行的窗口滚动的东西。 在这种情况下,只需在滚动事件中添加一个处理程序。

$(window).scroll(function() { 

    var windowTop = $(this).scrollTop(), 
     image = $('#listimages').find('img').filter(function(){ 
      return $(this).offset().top < windowTop+100; 
      //i am adding 100 in windowTop as we can consider the the image as cuurent image even if it is little bit below than top of window. 
     }); 


      //now you can directly use image if you want to manipulate it. 
      //if you want id you can get it by 
      var id=image[0].id //or image.attr('id'); 

    }); 

第二种情况,如果你想对任何事件的触发执行某些操作。

function currentImg(){ 
      var windowTop = $(this).scrollTop(), 
      image = $('#listimages').find('img').filter(function(){ 
       return $(this).offset().top < windowTop+100; 
      }); 
      return image[0].id; 

} 

但是请记住添加像scroll,mousemove这样的事件会更频繁地执行,所以建议在需要它之前不要使用太多的东西。