2013-04-21 126 views
0

我有jCarousel 0.2.8在我的Drupal 7模塊完美地在Firefox中使用jQuery 1.7.1和jQuery UI 1.8.11。但是,傳送帶在Internet Explorer 7,8,9和10中無法正常工作。如何讓它們在兩個瀏覽器中正確加載,我該怎麼做?附上FF和IE中的樣子截圖。以下是我的JavaScript/jQuery代碼。請注意,由於它是Drupal站點,因此使用jQuery()而不是$()。jQuery的外觀/在火狐但不是IE瀏覽器(Internet Explorer)

您可以測試在我的網站上描述的問題: [演示鏈接刪除]

任何幫助,得到這個固定的IE將非常感謝!謝謝!!

Firefox and IE screenshots

function select_avatar(image, button) { 
image.input.prop('checked', true); 

jQuery('#layer_'+image.id).css({ backgroundImage: "url("+image.url+")" }); 

var src = button.attr("src"); 

button.parent().parent().find("li img").each(
    function(index) { 
     if(jQuery(this).attr("src") == src) 
     jQuery(this).addClass("avatar_select"); 
     else 
     jQuery(this).removeClass("avatar_select"); 
    } 
); 
} 

function unselect_avatar(image, button) { 

image.input.prop('checked', false); 

//select empty 
jQuery('#default_input_'+image.id).prop('checked', true); 

jQuery('#layer_'+image.id).css({ backgroundImage: "none" }); 

var src = button.attr("src"); 

button.parent().parent().find("li img").each(
    function(index) { 
     if(jQuery(this).attr("src") == src) 
     jQuery(this).removeClass("avatar_select"); 
    } 
); 
} 

function mycarousel_itemVisibleInCallback(carousel, item, i, state, evt) { 
// carousel.data is empty on page load 
var data = carousel.data; 

// True on page load 
if(!data) { 
    // cid is name of carousel, user_avatar_select_X 
    var cid = carousel.list.attr('id').substring(9); 
    var data = new Array(); 

    // For each img element in ID user_avatar_select_X 
    jQuery('#'+cid+' img').each(
     // Provide index # for each iteration of loop 
     function(index) { 
      // Sets input to the input element nearby the img element 
      // Note: Parent element is a label element 
      var input = jQuery(this).parent().siblings('input'); 
      // Sets url to the src of the img element 
      var url = jQuery(this).attr('src'); 

      // If the img is selected, apply the img to ID layer_user_avatar_select_X 
      // (which is on the picture) 
      if(input.is(':checked')) { 
        jQuery('#layer_'+cid).css({ backgroundImage: "url("+url+")" });     
      } 

      // Adds variables to the data array 
      data.push({id: cid, input: input, image: jQuery(this), url: url}); 
     }); 

    // Stores data array in carousel 
    carousel.data = data; 

    // Adds html to ID user-edit 
    // Adds input with ID default_input_user_avatar_select_X 
    // and name select_avatar_X 
    jQuery('#user-edit').append('<div class="form-item" style="display:none"><label class="option"><input class="form-radio user_avatar_select" id="default_input_'+cid+'" type="radio" value="none" name="select_avatar_'+cid.substring(cid.lastIndexOf("_") + 1)+'"/></label></div>'); 
} 

var idx = carousel.index(i, data.length); 
var image = data[idx - 1]; 

var img = image.image.clone(); 

if(image.input.is(':checked')) 
    img.addClass("avatar_select"); 

carousel.add(i, img); 

img.hover(
    function(){jQuery(this).addClass("avatar_hover");}, 
    function(){jQuery(this).removeClass("avatar_hover");} 
); 

img.click(
    function() { 
     if(image.input.is(':checked')) 
      unselect_avatar(image, jQuery(this)); 
     else 
      select_avatar(image, jQuery(this)); 
    } 
); 
}; 

function mycarousel_itemVisibleOutCallback(carousel, item, i, state, evt) { 
carousel.remove(i); 
}; 

function mycarousel_init(list) { 
// list parameter is ID user_avatar_select_X radio buttons and images 
// If list isn't valid, bail out 
if(!list.attr('id')) 
    return; 

// Add layer to picture for each list (ccrresponding to the choices for avatars) 
jQuery(".picture").append('<div class="avatar_layer" id="layer_'+list.attr('id')+'"></div>'); 

// Adds UL carousel_X with Tango Skin to each list 
list.append('<ul id="carousel_'+list.attr('id')+'" class="jcarousel-skin-tango"></ul>'); 

// Creates carousel for each list 
jQuery('#carousel_'+list.attr('id')).jcarousel({ 
    scroll: 3, 
    visible: 3, 
    wrap: 'circular', 
    //itemLoadCallback: itemLoadCallbackFunction, 
    itemVisibleInCallback: {onBeforeAnimation: mycarousel_itemVisibleInCallback}, 
    itemVisibleOutCallback: {onAfterAnimation: mycarousel_itemVisibleOutCallback} 
}); 
} 

jQuery(document).ready(function() { 
// Hide original ID user_avatar_select_X radio buttons and images 
// since we want them to be in carousels instead 
jQuery('div.user_avatar_select').parent().hide(); 

for(var i=0;i<10;i++) { 
    // Create a carousel based on ID user_avatar_select_X 
    mycarousel_init(jQuery('#user_avatars_select_'+i)); 
} 

// Hide the picture with ID current, since the user may want to build a new avatar 
jQuery(".picture #current").css({display: "none"}); 

// Show the default avatar, so the user can build a new avatar 
// Selected layers for the current avatar will be added on top 
jQuery(".picture").css({"position": "relative", "width": "200px", "height": "199px", "background-image": "url(/sites/default/files/default_avatar.gif)"}); 
}); 

回答

0

在CSS我設置一個特定的高度和寬度在圓盤傳送帶的圖像和固定它。他們有高度:汽車,但這不足以IE我猜。

相關問題