1

我完全被难住了,任何帮助表示赞赏。

代码片段:

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

$specialIFrame是一个 iframe,选择菜单的值是从页面上的另一个 iframe 中提取的。上面的代码在 FF 和 Chrome 中正确设置了我选择的选项,但在 IE7 中没有。$varietal_code当我用 alert()测试值时;我得到正确的数值。当我在有效值而不是变量中硬编码时,$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);  
    });  

我留下了我自己的测试和警报,所以任何人都可以看到我的一些测试。

4

1 回答 1

0

您是否已验证$varietal_code没有空格?我之前遇到过变量仅在 ie7 中具有随机空格的问题,解决方案是去除空格。

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

$varietal_code = strip($varietal_code);

在你的代码之前。

于 2010-11-09T23:16:47.703 回答