1

選択タグ (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'));
    ...

そして、それが何を返してもfalseです。しかし、FF では true vi を返します。マウスを押したままにして、オプションの 1 つを選択します。(同じシステムで)作成したカスタム選択リストで使用される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 の両方で機能します。

4

1 に答える 1

1

QuirksModeから。

event.target - W3C/Netscape によると: ターゲット。いいえ、マイクロソフトは srcElement と言います。

それを回避する方法は肯定的ではありません。ただし、QuirksMode の記事を読んでください。これは、実行したいことを実行する場合と実行しない場合がある機能を提供し、うまく機能する他のいくつかの属性も指定しているためです。IE のハッキングを心配する必要がないように、jQuery に抽象化されたバージョンがあることを願っています。

于 2011-09-22T15:49:11.930 に答える