2017-10-06 19 views
0

進口我在body年底有此代碼的div運行:jQuery的不與JS

$(document).ready(function() { 

    var includes = $('[data-include]'); 
    jQuery.each(includes, function(){ 
     var file = $(this).data('include'); 
     $(this).load(file); 
    }); 

    var s = '.item .text'; 
    s.css('opacity', 0); 
    $(s).hover(function(){ 
     $(this).animate({opacity: 100}, 1000); 
    },function(){ 
     $(this).animate({opacity: 10}, 1000); 
    }); 
}); 

第一部分進口一堆從外部文件,其中包含了一堆.item的div HTML的塊。

第二部分應該是讓它們在懸停時淡入淡出。

但第二部分從來沒有工作。懸停時沒有任何反應。

感覺像是與執行順序有關嗎?

我試過$(document).ready塊內外的這些腳本,但無法使其正常工作。

+1

這行應該是'$(s).css('opacity',0);'我猜。 –

+0

只有在所有div被添加到dom後,你才應該綁定你的'hover'事件處理函數。目前,當你綁定這個懸停功能時,沒有匹配的div。 –

+0

@MohitBhardwaj是的,我該怎麼做? –

回答

0

應該$(s).css('opacity', 0);s.css('opacity', 0);

0

嘗試下面給出的代碼。假設你的動畫功能是正確的,我只添加了等待所有div加載的邏輯。

var numLoadedFiles = 0; 
var numIncludesDivs = 0; 
$(document).ready(function() { 
    var includes = $('[data-include]'); 
    numIncludesDivs = includes.length; // store no. of divs to be loaded 
    jQuery.each(includes, function(){ 
     var file = $(this).data('include'); 
     $(this).load(file, function(){ 
     numLoadedFiles++; // update how many divs have been loaded 
     if(numLoadedFiles === numIncludesDivs){ 
      // all divs have been loaded now 
      attachHoverHandler(); 
     } 
     }); 
    }); 
});//document ready() 


function attachHoverHandler(){ 
    var s = '.item .text'; 
    $(s).css('opacity', 0); 
    $(s).hover(function(){ 
     $(this).animate({opacity: 100}, 1000); 
    },function(){ 
     $(this).animate({opacity: 10}, 1000); 
    }); 
}//attachHoverHandler() 
+0

如果你只是將Promise推入一個數組,然後在後面使用'$ .when',這將會更清晰。 – meagar

+0

@meagar,謝謝你的建議。其實我還沒有使用jQuery中的承諾。我現在肯定會進一步閱讀。再次感謝:) –

+0

它會看起來像這樣:https://pastebin.com/a0sNpH65 – meagar