2011-09-22 3 views
1

select 태그 (filterBA)에서 click 이벤트가 발생하고 옵션이 동적으로 생성됩니다.jQuery는 생성 된 요소 속성을 가져옵니다. FF와 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()); 
     } 
} 
}); 

위대한 작품 ... 파이어 폭스에서,하지만 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 바보, 내가 잊고 이후의 모든에 대해 "선택".. DOH! 그래서 내 태그에 내 새로운 이벤트가 있습니다 :

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

이것은 선택 드롭 다운의 동적으로 생성 된 옵션에서 FF와 IE 모두에서 작동합니다.

답변

1

QuirksMode.

event.target - W3C/Netscape 메시지 : 대상. Microsoft는 srcElement를 사용합니다.

어떻게하면 좋을지 모르겠다. QuirksMode 기사를 읽으십시오.하지만 원하는 기능을 수행 할 수도 있고하지 않을 수도있는 기능을 제공하며, 또한 잘 작동하는 몇 가지 다른 속성을 지정합니다. jQuery에 추상화 된 버전이있어 IE 해킹에 대해 걱정할 필요가 없기를 바랍니다.

+0

내 문제에 대한 해결책을 찾았습니다. :)하지만 도움을 주셔서 감사합니다. –

+0

아 - 해결책이 너무 분명합니다. 숲을 놓치지 만 나무는 놓쳤습니다. – mrtsherman

관련 문제