IE7:。remove()不起作用 - 元素(byID)不存在

时间:2011-11-29 01:08:31

标签: javascript jquery

以下此代码不适用于IE7,但在所有其他测试的浏览器中都能正常运行。

元素'#requestFormContainer'在下面的.ajax请求之后出现。

事实上,$('#requestFormContainer').length在所有测试的浏览器中等于1,但在IE7中等于0。所以它就不存在了。 IE的调试工具或Firebug中没有错误。我没有想法。

function ShowEventForm(erid) {
    $.ajax ({'url': '<?php echo $GLOBALS['SERVER_NAME_HTTP']; ?>ajax/ajax.showrequestform.php',
    'data': {'task':'ShowRequestInfo','erid':erid},
    'dataType':'html', 'type': 'POST',
    'success': function (data) { 
        $('#eventListContainer').hide();
        $('#clientContentPanel').append(data);
        $('#backToEventList').click(function() {
            $('#requestFormContainer').remove();
            $('#eventListContainer').show();
        });
    } 
    });
}

更新 - 没有以下更改的解决方案:

我已经改变了

$('#clientContentPanel').append(data)$(data).appendTo('#clientContentPanel')

从有问题的元素中删除并重新定位了一些js代码:

<div id="requestFormContainer">

1 个答案:

答案 0 :(得分:0)

你如何在dom中添加$('#requestFormContainer')?

你可以查看jQuery .live,这是这个问题的常见答案。

否则,您可以重新检查如何将$('#requestFormContainer')添加到dom ...

var elem = $('<div>');
elem.html('this is the inner contents of the new element');
elem.attr('id', 'requestFormContainer');
body.append(elem);

还会以可用的方式在IE中添加元素......

与逻辑方式相反:

$('body').append('<div id="requestFormContainer"><p>some html</p></div>');

IE可能会遇到问题。

我会首先考虑live()。 http://api.jquery.com/live/

此外,我不认为这需要在您的ajax响应中(我将其更新为实时版本)...

 $('#backToEventList').live('click', function() {
      $('#requestFormContainer').remove();
      $('#eventListContainer').show();
 });

因为它是一个不存在的对象的监听器,所以如果它在ajax请求之外是无害的,并且.live在响应中添加它时仍会将其视为对象。