簡體   English   中英

為什么此事件僅綁定到與選擇器匹配的一個元素?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM