好吧我今天一直在試圖學習Dojo,我似乎無法弄清楚爲什麼我不能淡入我的元素。我在這裏做的是從json對象中加載一組圖像並將它們放入DOM中。然後我想用一個數組和移位方法一次一個地淡入淡出。這是我在jQuery中編寫的一個工作插件,我正在使用它作爲Dojo的速成教程。奇怪的是,即使我剝離數組並僅嘗試定位單個DOM元素,但仍然無法使淡出動畫工作,但如果我將其中一個例子here直接粘貼到我的網頁中, 這樣可行。Dojo淡入淡出的動畫不起作用
下面的代碼:
define([
"dojo/query", "dojo/dom-class", "dojo/domReady!", "dojo/request", "dojo/json", "dojo/_base/fx", "dojo/on", "dojo/dom-attr", "dojo/dom-style"
],
function(query, domClass, dom, request, fx, on, domAttr){
var images = new Array(); //The array object created from the XML file
var cur_first = 0; //Current first image, used as a counter to determine which images should be shown
var running = true; //Flag to prevent multiple firings or next/prev
var display_num = 4; //Num of images displayed at a time
request.get('../../javascript/json/rotator_images.js',{handleAs:'json'}).then(
function(response){
for(i=0; i < response.images.image.length; i++){
var src = response.images.image[i].src;
var title = response.images.image[i].title;
var desc = response.images.image[i].desc;
var thumb = response.images.image[i].thumb;
images[i]={src: src, title: title, desc: desc, thumb: thumb};
}
load_images();
}
);
function load_images(){
for(i=0; i < images.length; i++){
if(i >= cur_first && i < cur_first+display_num){
dojo.create("div", {
innerHTML:"<a class='fancybox' rel='group' href='"+images[i].src+"'><img src='"+images[i].thumb+"' /></a>",
className:"r_image",
style:{opacity:'0'},
id:"r_image_"+(i+1)
},dojo.byId("images_wrap"));
}
}
display_images();
}
function remainder(){
//Find the remaining images left at the end inside our display_num control so we can determine when to start back at 0 or jump to the end
var flr = Math.floor(images.length/display_num)
return images.length - (flr*display_num);
}
query("#arrow_r").on("click", function(){
if(running == false){
running = true;
if(cur_first < images.length - remainder()){
cur_first = cur_first+display_num;
}else{
cur_first = 0;
}
hide_images();
}
})
query("#arrow_l").on("click", function(){
if(running == false){
running = true;
if(cur_first > 1){
cur_first = cur_first-display_num
hide_images();
}else{
cur_first = images.length - remainder();
hide_images();
}
}
})
function display_images(){
var images_arr = [];
dojo.query(".r_image").forEach(function(node) {
images_arr.push(node);
});
function fadeThemIn(images_arr) {
if (images_arr.length > 0) {
var currentImg = images_arr.shift();
var fadeArgs = {
node: currentImg,
duration: 200,
};
fx.fadeIn(fadeArgs).play();
}else{
running = false;
}
}
fadeThemIn(images_arr)
}
}
);
對不起剛剛傾倒整個代碼到這裏,但我想它必須是一些與Dojo的AMD AMD如何模塊被加載(我在這找到一個頭痛點)。
啊,這很有道理!我知道它必須是AMD的依賴項,因爲我正在耗盡其他所有可能性。我發現它來自jQuery的一點麻煩,但我絕對可以看到它與處理大量流量的大型Web應用程序的直接優勢。現在讓我嘗試重寫頭,看看會發生什麼。 – Throttlehead
是的!它正在工作。謝謝我的男士,謝謝你爲我清理這件事。他們真的應該在文件中強調這種必要性,以便喜歡像我自己大聲笑的頭部跳蚤。 – Throttlehead