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

这适用于FF,但不适用于Chrome。 Chrome中发生的事情是该类已设置,但createDisicipline()不是。jquery attr不能在chrome中工作?

这是错误的方式添加多个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'); 

请注意我的更改。我用引号括起class,因为它是InternetExplorer中的关键字,否则可能会破坏您的代码。我还将新创建的<select>节点附加到document.body。

演示http://jsfiddle.net/vM5Hp/

+0

非常感谢您!看到你很熟悉jQuery,你会介意告诉我如何缩短我的代码的其余部分吗? – Phil 2011-02-18 18:43:08

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 
    }); 
相关问题