为什么这个fadeOut()在Internet Explorer中不起作用?

时间:2011-08-13 16:47:55

标签: jquery internet-explorer fadeout

IE7,IE8,IE9上的

Tested ...并且未应用fadeOut()

<table>
    <tr class="sideOn hidden">
        <td class="trackBotton">
            <input type="submit" value="Remove" onClick="remSide(this);return false" />
        </td>        
    </tr>
</table>

function remSide(param) {
    $(param).parents('.sideOn').fadeOut(500, function() {
           $(this).remove();
    });
}

为什么会这样,我该如何解决这个问题?

同时删除remove()不起作用:

function remSide(param) {
    $(param).parents('.sideOn').fadeOut(500);
}

2 个答案:

答案 0 :(得分:5)

JQuery使用过滤器在Internet Explorer中执行淡入淡出,而过滤器仅适用于具有布局的元素。

您可以像这样给出表格行布局:

.sideOn { position: absolute; }

然后元素在Internet Explorer中淡出,但不建议更改表格行的position样式,因此您应该使用其他元素来淡化您想要的内容。

答案 1 :(得分:1)

Guffa对他的回答是正确的 - 所以我想提供另一种选择(IE的解决方法,就是这样):

function remSide(param) {
    $(param).parents('.sideOn').find('td').fadeOut(500, function() {
           $(this).parent().remove();
    });
}

这会淡出所有<td>,然后删除<tr>本身。似乎在IE8中工作正常。

演示:http://jsfiddle.net/B7ndq/3/