[英]Why is this event only binding to one element matching the selector?
我有这小部分的jQuery,应该将一次性事件绑定到与选择器匹配的每个元素,当它们出现时:
jQuery(document).ready(function($) {
if (jQuery.browser.mobile === false) {
$('.featureswrap img.left').css('opacity', 0).one('inview', function(isInView) {
if (isInView) {$(this).addClass('animated fadeInLeftBig delayp1');}
});
$('.featureswrap img.right').css('opacity', 0).one('inview', function(isInView) {
if (isInView) {$(this).addClass('animated fadeInRightBig delayp1');}
});
}
});
但是,它似乎仅绑定到页面上的一个(看似随机的)元素(每个选择器,因此共有两个元素)。 起初,我以为我误会了“ .one()”,但我认为并非如此。 CSS函数对于与选择器匹配的每个元素都可以正常工作,但是inView事件仅对每个选择器绑定一个。 也许是我误会的“这个”,或者完全是别的什么?
这里的一些帮助将不胜感激。 该页面不会引发任何错误,否则可以正常工作。 没有任何其他JavaScript可以干扰事件绑定甚至与相同元素进行交互。
通过使用.each将事件附加到每个元素来解决此问题。 这是更新的工作代码:
jQuery(document).ready(function($) {
if (jQuery.browser.mobile === false) {
$('.featureswrap img.left').each(function(index){
$(this).css('opacity', 0).one('inview', function(isInView) {
if (isInView) {$(this).addClass('animated fadeInLeftBig delayp1');}
});
});
$('.featureswrap img.right').each(function(index){
$(this).css('opacity', 0).one('inview', function(isInView) {
if (isInView) {$(this).addClass('animated fadeInRightBig delayp1');}
});
});
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.