2011-02-18 8 views
2
var select_tag = $('<select></select>').attr({ 
    onchange: 'createDiscipline()', 
    class: 'select_menu'} 
).fadeIn('slow'); 

이것은 FF이지만 Chrome에서는 작동하지 않습니다. Chrome에서는 클래스가 설정되지만 createDisicipline()은 설정되지 않습니다.jquery attr이 (가) 크롬에서 작동하지 않습니까?

태그에 여러 attrs를 추가하는 것은 잘못된 방법입니까? 그것은 FF에서 작업을 수행 :/

전체 코드 : 당신은 확실히이 같은 이벤트 핸들러를 결합하려고해서는 안

var select_tag = $('<select>', { 
        onchange: createDiscipline, 
        'class': 'select_menu'} 
       ).fadeIn('slow'); 
      for(i = 0; i < c_data.length; i++) { 
       select_tag.append('<option>' + c_data[i] + '</option>'); 
      } 

      //wrap select_tag in div 
      var div_buffer = $('<div class=\'select_buffer\'></div>'); 
      var div_container = $('<div class=\'select\'></div>'); 
      div_buffer.append(select_tag).wrap('<div class=\'select_buffer\' />'); 
      div_container.append(heading); 
      div_container.append(div_buffer); 

      //Append to the page after right_content id 
      $('#right_content').append(div_container) 

답변

4

. 눈에 띄지 않는 방식으로 수행하십시오.

var select_tag = $('<select>', { 
    change: createDiscipline, 
    'class': 'select_menu' 
}).appendTo(document.body).fadeIn('slow'); 

변경 사항에 유의하십시오. 내가 InternetExplorer의 키워드이기 때문에 따옴표로 묶어서 그렇지 않으면 코드를 깨뜨릴 수 있기 때문에 class을 싸서 넣었다. 또한 새로 만든 <select> 노드를 document.body에 추가했습니다.

데모 : http://jsfiddle.net/vM5Hp/

+0

대단히 감사합니다! jQuery를 잘 알고있는 것을보고 나머지 코드를 단축하는 방법을 알려주시겠습니까? – Phil

0
Some time it’s very frustrated that jQuery .attr not working with Chrome. 
    Here I am giving you solution for this. 
    Try: 
    $(window).load(function() { 
    //your script or function 
    }); 
    Rather then 
    $(document).ready(function() { 
    //your script or function 
    }); 
관련 문제