【发布时间】:2009-12-09 12:48:41
【问题描述】:
我将一个选择元素附加到一个 DOM 节点并动态填充它,这在 Firefox 和 Safari 中运行良好。不幸的是,当我单击选择框时,它不会在 Internet Explorer 中下拉。任何想法这里出了什么问题?
$('<select size="1">').appendTo(
$('#mytable tbody')
.find('tr:last')
.find('th.col1')
)
.attr('id', 'select_' + counter)
.append('<option>New Option</option>')
.click(function() {
var t = $(this);
// Get matching alternatives as json
$.getJSON(Drupal.settings.basePath + 'mymodule/product_cat/' + data['product_category'], function(cat_data) {
t.find('option').remove();
$.each(cat_data, function(i,item){
t.append($("<option value='" + JSON.stringify(item) + "'>" + item.name + "</option>"));
});
t.find('option:first').attr('selected', 'selected');
});
})
.change(function() {
tmparr = $(this).attr('id').split('_');
set_row_data($(this).parent().parent(), $(this).val());
});
}
-- 更新--
我在更新后检查了选择框在 IE7 中包含的代码 - 它通过 json 获得的选项似乎正确地插入到了 dom-tree 中,所以看起来问题出在其他地方。任何想法表示赞赏。
-- 更新 2 --
IE7的问题似乎出在.click()-function:
如果我放置一些这样的代码:
$('#myelement').append('<option>foo</option>');
即使在 IE7 中也能正常工作。
如果我将它放入这样的点击功能中:
$('#myelement').click(function() {
$(this).append('<option>foo</option>');
});
问题出现了。
-- 解决方案--
没有人注意到(最重要的是:我),我的第一行是错误的:
$('<select size="1">').appendTo(...
应该是
$('<select size="1"></select>').appendTo(...
现在可以使用了,谢谢大家。
【问题讨论】:
标签: jquery internet-explorer-7