我的选择标签(filterBA)上有一个点击事件,然后动态生成选项。
$("#filterBA").click(function(event){
var $tgt = $(event.target);
if($tgt.is('option')){
if($tgt.attr('id') != 0){
sortRowsByBA($tgt.attr('id'));
}else{
appendOrReplaceRows("replace", getSortColumn(), getAscdesc());
}
}
});
这很好用……在 Firefox 中,但 IE 不会重新连接我的 $tgt 作为选项。我通过添加检查:
$("#filterBA").click(function(event){
var $tgt = $(event.target);
alert($tgt.is('option'));
...
而且无论它返回什么都是假的。但在 FF 中它返回 true vi 我按住鼠标选择其中一个选项。我不明白,因为当我必须选择在我创建的自定义选择列表中使用的 div 时(在同一系统中)我使用相同的方法,但是当点击事件在标签上时它不会工作。
有人知道可能出了什么问题吗?
顺便提一句。这是我生成选项的函数:
function pupulateBA(){
$selectTag = $('#nav select').html('<option id="0">Select business area</div>');
$.ajax({
url: "ajaxBAs.cgi",
dataType: 'json',
success: function(jsonData){
for(var businessIndex in jsonData){
$selectTag.append("<option id='"+jsonData[businessIndex].id+"'>"+jsonData[businessIndex].name+"</option>");
}
},
error: function(){
alert('Ajax error retriving business areas to frontpage.');
}
});
}
我找到了一个解决方案:
我是个白痴,因为我完全忘记了“:selected”.. DOH!所以这是我标签上的新事件:
$("#filterBA").change(function(){
$('#filterBA option:selected').each(function(){
alert($(this).attr('id'));
});
});
这适用于选择下拉列表中动态创建的选项的 FF 和 IE。