2010-02-04 34 views
7

我想创建一个jQuery选项传输插件。jQuery的bug? .appendTo()不工作在IE7

我有在opera,firefox,chrome & safari中工作的基本功能,但是IE7没有合作。

IE7中的传输函数看起来很偶然且难以理解。

我创建了an example page to illustrate my problem

任何人都可以看到我要去哪里错了吗?

感谢,

+0

不知道是什么的问题的根源是,但我没有复制。奇。 – 2010-02-04 15:45:55

+0

更可能是IE 7的bug ......;) – jamone 2010-02-04 21:29:36

+0

呵呵,你说...交换不同的版本jQuery产生不同的“效果”。 :p – Mike 2010-02-04 22:45:52

回答

6

这看起来不像.appendTo() - 在jQuery中的错误和IE7-has-superfunky-select-box-behavior问题一样多。这种解决方法似乎使其行为:

.parent() 
.click(function() {  
    $selectBox1.find('option:selected') 
       .appendTo($selectBox2.find('select')); 
    $selectBox1.html($selectBox1.html()); 
    $selectBox2.html($selectBox2.html());        
    sortBox($selectBox2); 
    }) 

的appendTo后重建的每个选择框的HTML()强制IE更新其状态。

JSbin:http://jsbin.com/opome3/4(固定.clone(真)的第一个按钮)。

+0

谢谢你。这可能是因为我盯着这个时间过长,但出于某种原因,最后一个按钮(从2→1中选择的移动)在Chrome,Firefox,Opera或Safari中不起作用 - 在您的示例中。 – Mike 2010-02-04 18:59:10

+0

您需要为第一个按钮添加.clone(true)。 – jkyle 2010-02-04 19:33:22

+0

你是明星,谢谢你的伴侣。 – Mike 2010-02-04 20:12:56

1

我得到的也就是一个错误:

行:16 错误: '未定义' 为空或不是对象

指向此:

j=l.replace(/^[\-\d\.]+/,"") 

我猜你需要测试为null?只是一个猜测。

+2

如果您在本地加载文件,这似乎不会发生。获取源代码并创建自己的html文件。我认为这是一个jsbin的bug? – Mike 2010-02-04 15:51:46

+1

错误来自“edit.js”脚本,而不是来自您的代码。 – Pointy 2010-02-04 16:43:15