2016-04-01 31 views
0

Aşağıdaki sayfada, başlangıç ​​ve seçim sayfalarında 2 aşağı açılır menüyü değiştirmeye yarayan bir kod var. Birincisi, sayfa yükü için sayfa kategorisine uyarlanması gereken ana kategorileri içerir. İkincisi, daha sonra (hangisi sayfanın başlangıcına veya seçimine göre) seçilene bağlı olarak farklı seçenekler sunar.Firefox'ta beklendiği gibi çalışmayı değiştirmeyecek şekilde değiştiriliyor

Aşağıdaki kod, büyük modern tarayıcılarda mükemmel çalışır ancak Firefox'ta olduğu gibi DEĞİL.

Sayfanın ilk açılan sayfasından aşağıya doğru hareket ettiğinde ortaya çıkan sorun, evet, üste gider ancak Firefox'ta eski metin görünür alanda tutulur. Burada anlamsal bir problem var mı?

jQuery(document).ready(function(){ 

// get the page category 
var pageCat = jQuery("#page-wrapper .breadcrumb").find("li.active").text().replace(/\s+/g, '-').toLowerCase(); 

// get inserted post category instead in case of single seminar 
if (jQuery(".courses-detail").length) { 
    jQuery('.courses-detail').each(function() { 
     $courseCat = this.className.match(/(^|\s)sw_course_cat\S+(\s|$)/); 
    }); 
    pageCat = $courseCat[0].replace('sw_course_cat-','').trim(); 
}; 

// store drop down menus 
var $dropDown = jQuery('#page-wrapper select[name="courses[category]"]'); 
var $dropDown_2 = jQuery('#page-wrapper select[name="courses[location]"]'); 


// make it the first in the drop down list 
// remove “all categories” option 
var $standard = $dropDown.find('option[data-link="http://www.falkenberg-seminare.de/cms/edu-course/"]'); 
$standard.remove(); 

// change position 
var $startList = $dropDown.find('option[value="' + pageCat + '"]'); 
$startList 
    .remove(); 
$dropDown.prepend($startList); 

// filter the second drop down based on first drop down option selected 
var $options = $dropDown_2.clone(); // this will save all initial options in the second dropdown 

$dropDown.change(function() { 
    var filters = []; 
    if (jQuery(this).val() == "") { 
    jQuery(this).find("option").each(function(index, option) { 
     if (jQuery(option).val() != "") 
     filters.push(jQuery(option).val()); 
    }); 
    } else { 
    filters.push(jQuery(this).val()) 
    } 

    $dropDown_2.html(""); 

    jQuery.each(filters, function(index, value) { 
    $options.find("option").each(function(optionIndex, option) { // a second loop that check if the option value starts with the filter value 
     if (jQuery(option).val().startsWith(value)) 
     jQuery(option).clone().appendTo($dropDown_2); 
    }); 

    }); 
    }); 

    $dropDown.trigger('change'); 

}); 

Ben Fiddle teslim etmek üzgünüm ama sayfa yüklemesinde doğru göstermek için pageCat seçimini taklit nasıl düşünemiyorum. Ancak, bilmediğim bazı bilinen Firefox kod sorunu var (ve Google yardım etmedi).

Yardımlarınız için çok teşekkür ederim!

cevap

0

kodumu genişletme:

// same initially on page load 
$dropDown 
    .trigger('change') 

    // add this for Firefox 
    .val(pageCat) 
    .change(); 

sorunlarımı çözdü. Firefox önbelleğe almayı engellemek için html özniteliğini de ekledim: autocomplete = "off" seçili etiketlerime. Birisi ilgilenir ya da aynı sorun varsa lütfen yorum yapın ve bir keman ekleyeceğim.