我只有在 IE7 中弹出一个问题,"Object doesn't support the property or method"
当onChange
任何带有VariationSelect
. 因此,我将其范围缩小到以下内容:
$(".VariationSelect").change(function() {
// a bunch of irrelevant code
// get the index of this select
var index = $('.VariationSelect').index($(this)); //this is the line throwing the error in IE7
//some code that returns a block of data in json formatting
});
我的第一个想法是一段代码,attr('disabled', 'disabled')
因为我以前在 IE7 中也使用 removeAttr 时遇到过问题,但即使我删除了这些行,错误仍然保持不变,并且 JS 错误中的行/字符引用(当然,这是没有意义的)不会改变。那么,您在该代码块中是否看到 IE7 不接受的其他内容?
编辑:更改选择框后代码正在运行。选择框 HTML 如下所示:
<div class="DetailRow">
<div class="Label">Some Label:</div>
<div class="Value">
<select name="variation[aNumberStartingAtOneAndIncrementingUpwards]" class="VariationSelect" id="VariationSelect" style="width: 180px;">
<option value="">-- Choose an option --</option>
{A bunch of options for this choice loaded by PHP}
</select>
</div>
</div>
快速而肮脏的方法是,因为我知道名称元素中总是有一个比索引大一的数字,所以从更改的元素中获取名称,如下所示:
var index = $(this).attr('name');
index = index.replace('variation[','');
index = index.replace(']','');
index = (index*1)-1;
有没有更快/更好的方法来获取索引?