2011-09-22 37 views
1

我的选择标签(filterBA)上有一个单击事件,然后动态生成选项。jQuery获取生成的元素属性FF vs IE问题

$("#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')); 
    ... 

而且不管它返回的是否为false。但在FF中,它返回真正的VI我按住我的鼠标选择一个选项。我不明白,因为当我必须选择一个用于我创建的自定义选择列表(在同一系统中)的div时,我使用相同的方法,但是当点击事件在标签上时,它不会工作。

有人知道什么可能是错的?

btw。这里是我的函数生成的选项:

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.'); 
    } 
}); 

}

我找到了一个解决方案:

OFC IM白痴,因为我忘记了所有关于 “:选择” ..卫生署!所以这是我对我的标签新事件:

$("#filterBA").change(function(){ 
    $('#filterBA option:selected').each(function(){ 
     alert($(this).attr('id')); 
    }); 
}); 

这工作既FF和IE浏览器上的选择,下拉动态创建的选项。

回答

1

QuirksMode

event.target - W3C/Netscape说:目标。不,微软说,srcElement。

不积极如何解决它。请阅读QuirksMode文章,因为它提供的功能可能会或可能不会完成您想要的功能,并且还指定了其他一些可能适合您的属性。尽管我希望jQuery可能有一个抽象版本,以便您不必担心IE黑客行为。

+0

找到解决我的问题:)但谢谢你的帮助。 –

+0

啊 - 你的解决方案如此明显。错过了森林,但为了树木。 – mrtsherman