此代码适用于IE,FF和Safari(windows7)。
然而,它无法在Chrome中运行。
基本上,我正在尝试对页面加载进行一些更改(Magento产品页面)。我更改了所选的选项(隐藏的选择下拉列表),然后当它们悬停在添加到购物车按钮上时,我确保选择了一个选项。
以下代码:
$j('select#attribute76').val( $j('a'+hash).attr('index') ).change();
alert($j('select#attribute76').val()); // shows correctly w/ all browsers
......然后...... ...
$j('#addtocartbutton').hover(function(){
//alert($j('select#attribute76 option:selected').val());// empty in Chrome!
if ($j('select#attribute76').val()=='')// empty in Chrome!
$j('.infoOptionsColors a:first').click();
});
正在发生的事情是Chrome正在选择我要求的选项,但它会以某种方式恢复...可能还有另一个覆盖它的调用..
答案 0 :(得分:0)
如果您知道$j('select#attribute76').val()
生成一个值,为什么不总是使用它而不是那个不起作用的较长$j('select#attribute76 option:selected').val()
?
编辑:
我明白了。 select的值可以是数组,因为select也可以是多选。与空字符串(''
)进行比较时,大多数浏览器都会将所有空值视为相等的快捷方式,无论是0
,NULL
还是没有项目的数组。
if (!$j('select#attribute76').val())
或将返回的值转换为字符串
if (String($j('select#attribute76').val())=='')
答案 1 :(得分:0)
我仍然不知道问题是什么。
我通过将代码移到javascript调用的末尾来解决它。
我之后移动的代码似乎几乎没有关联..将更多内容分配给.click函数,它只是添加/删除类,而不是更改任何表单值。 +一些视频代码..
感谢@clockworkgeek试图提供帮助。