我有一些JS代码将所有HTML下拉列表转换为引导下拉列表:
jQuery(function($){
$('#primary').each(function(i, e) {
if (!($(e).data('convert') == 'no')) {
$(e).hide().wrap('<div style="display:inline-block;" class="btn-group" id="select-group-' + i + '" />');
var select = $('#select-group-' + i);
var current = ($(e).val()) ? $(e).val(): 'Category';
select.html('<input type="hidden" value="' + $(e).val() + '" name="' + $(e).attr('name') + '" id="' + $(e).attr('id') + '" class="' + $(e).attr('class') + '" /><a data-toggle="dropdown" style="border-radius:4px 0px 0px 4px; margin-right:0px;" class="btn" href="javascript:;">' + current + '</a><a class="btn dropdown-toggle" data-toggle="dropdown" href="javascript:;"><span class="caret"></span></a><ul style="max-height:300px; overflow-y:scroll; overflow: -moz-scrollbars-vertical;" class="dropdown-menu"></ul>');
$(e).find('option').each(function(o,q) {
if($(q).attr('value') > 0) {
if($(q).attr('value') == 30 || $(q).attr('value') == 17 || $(q).attr('value') == 185 || $(q).attr('value') == 196 || $(q).attr('value') == 197 ) {
select.find('.dropdown-menu').append('<li style="background-color:#FFFACD;"><a href="javascript:;" data-value="' + $(q).attr('value') + '">' + $(q).text() + '</a></li>');
} else {
select.find('.dropdown-menu').append('<li><a href="javascript:;" data-value="' + $(q).attr('value') + '">' + $(q).text() + '</a></li>');
}
}
if ($(q).attr('selected')) select.find('.dropdown-menu li:eq(' + o + ')').click();
});
select.find('.dropdown-menu a').click(function() {
select.find('input[type=hidden]').val($(this).data('value')).change();
select.find('.btn:eq(0)').text($(this).text());
});
}
});
});
我检查了IE控制台,根本没有出现任何错误...
它在safari / Chrome等Webkit浏览器中表现得很好,但不是IE。 在IE(IE 10)中,下拉列表是空的,如下所示:(在html中为空)
在safari中,它是这样的:
更新
经过更多调试后,问题就在这里......看起来行$(e).find('option').each(function(o,q) {
在IE中不起作用,因为里面的所有代码都没有运行。 问题在于.find()
。我将其更改为.children('option')
或.children()
,所有这些都无法在IE中使用。我正在使用jQuery 1.7.2。
$(e).find('option').each(function(o,q) {
...
}
答案 0 :(得分:0)
检查下拉列表ul
并检查是否存在lis,这似乎是一个CSS问题,这在IE上很常见。
尝试给ul ant它的元素float: left
;和width
。