以下此代码不适用于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">
答案 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在响应中添加它时仍会将其视为对象。