использовать переменную при настройке параметра select: selected внутри jquery find () IE7 проблема - PullRequest
1 голос
/ 10 ноября 2010

Я в полном недоумении, и любая помощь приветствуется.

фрагмент кода:

$specialIFrame.contents().find("#flavorPara select#productList option[value="+$varietal_code+"]").attr("selected","selected");

$specialIFrame - это iframe, значения для меню выбора извлекаются из другого iframe на странице. Приведенный выше код правильно устанавливает выбранную опцию в FF и Chrome, но не в IE7. Когда я проверяю значение $varietal_code с предупреждением (); Я получаю правильное числовое значение. Когда я жестко кодирую допустимое значение вместо переменной $varietal_code, вышеописанное работает правильно даже в IE7. Но когда я использую вышеупомянутое в IE7, на компьютере с Windows Vista, меню выбора по умолчанию выбирает первый вариант.

Я бы включил весь код, но он настолько многословен, что я надеюсь, что моя проблема только в приведенном выше коде.

Я также пытался .attr('selected',true); безрезультатно.

Я предполагаю, что моя конкатенация - это проблема? Заранее спасибо, Stack Overflow постоянно получал ответы на мои запросы, но я впервые задаю вопрос.

Я добавляю всю функцию, это может быть более глубокой проблемой, чем я думал:

 $specialIFrame.contents().find('#selectWinePopup a').click(function() {
            var $varietal_code = $(this).attr('href').replace('#','');  
    var $varietal_name = $(this).text();    
    //alert('code ' + $varietal_code + ' name ' + $varietal_name);  
    //$specialIFrame.contents().find('#flavorPara #productList > option[value="'+$varietal_code+'"]').attr("selected", "selected");  
    $specialIFrame.contents().find("#flavorPara select#productList option[value="+$varietal_code+"]").attr("selected", "selected");  
    //$specialIFrame.contents().find('#flavorPara #productList').val($varietal_code);  
    //$specialIFrame.contents().find("#flavorPara select#productList option[value="+$varietal_code+"]").selectedIndex = 1;  
    //alert($varietal_code);  
    $specialIFrame.contents().find('#selectWinePopup').hide();  
    $specialIFrame.contents().find('#flavorPara').removeClass('active');  
    $specialIFrame.contents().find('#flavorPara').css("background-image","url('/resources/images/ftrWineSelect.jpg')");  
    var $starttext = $specialIFrame.contents().find('#flavorPara #showflavor').text();  
    var $newtext = $specialIFrame.contents().find('#flavorPara select#productList option:selected').text();  
    var $valtext = $specialIFrame.contents().find('#flavorPara select#productList option:selected').val();  
    //alert($newtext);  
    alert($valtext);  
    $specialIFrame.contents().find('#flavorPara #showflavor').text($varietal_name);  
    //alert('code ' + $varietal_code + ' name ' + $varietal_name);  
    });  

Я оставил свои собственные тесты и предупреждения, чтобы каждый мог увидеть некоторые из моих тестов.

1 Ответ

0 голосов
/ 10 ноября 2010

Вы убедились, что $varietal_code не имеет пробелов? У меня были проблемы, когда переменные имели случайные пробелы только в ie7 и раньше, и решение состояло в том, чтобы удалить пробелы.

var strip = function(s) {
    return String(s).replace(/^\s+|\s+$/g, '');
};

$varietal_code = strip($varietal_code);

перед вашим кодом.

...