[英]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.