Jquery脚本仅在切换IE窗口后才能工作

时间:2011-05-14 02:01:50

标签: internet-explorer jquery

下面的脚本查询返回JSON响应的php服务。为每个返回的记录创建按钮,允许用户从数据库中删除该记录。下面还会创建一个链接来刷新数据。

这一切在IE,Chrome,Safari中运行良好...... IE(试过8& 9)但是有一个奇怪的问题。

页面加载后,我可以点击“刷新”链接刷新数据。在此之后,单击无效,除非我在不同的IE窗口中打开相同的页面,单击新窗口中的链接,然后返回到原始窗口。然后,“刷新”链接将在新窗口上运行一次。然后它变成了一个恶性循环。

感谢您的帮助!

<script type="text/javascript">

function getNew(){ 
$('#new').remove();
$.getJSON('service.php', function(data) {

  var items = [];

  items.push('<tr><th>EmplId</th><th>ExternalID</th><th>Name</th></tr>');   

  $.each(data, function(key, val) {

    var indiv = val.toString().split(",");
    items.push('<tr>');
    var id = indiv[0];

    $.each(indiv, function(index, value) {
        items.push('<td align="center" id="' + index + '">' + value + '</td>');
    });

    items.push('<td  class="updateButton" align="center" onclick=\'return update("'+id+'")\'>Update</td>');

  });
    items.push('<tr><td  class="refreshButton" align="center" onclick=\'return getNew();\'>Refresh </td></tr>');

  $('<table/>', {
    'id': 'new',
    html: items.join('')
  }).appendTo('body');
});
}



function update (emplID){
$.ajax({
  url: "service.php?emplID="+emplID,
  context: document.body,
  success: function(){

 $('#new').remove();

 getNew();

  }
});
}

</script>

</head>

我已经禁用了缓存仍无济于事。使链接工作的唯一方法是在单独的窗口中打开同一页面,单击链接,然后返回到原始窗口。这有什么解决方案吗?

$(".refreshButton").live( "click" , function() { getNewStudents(); 
$.ajax({
  url: "studentService.php?emplID=",
  cache: false,
  context: document.body,
  success: function(){

 $('#newStudents').remove();

 getNewStudents();

  }
});
} );

2 个答案:

答案 0 :(得分:0)

最好一路使用jQuery。不是在每个链接上写onclick,而是在JavaScript文件中添加订阅者:

$(".refreshButton").live( "click" , function() { getNew(); } );

live()会将onclick处理程序附加到与选择器匹配的所有现有和将来的元素。

HTH。

编辑:

顺便说一句,如果您有兴趣,请参阅live()的API文档:http://api.jquery.com/live/

答案 1 :(得分:0)

也许IE正在更彻底地缓存页面。 另外,您是否尝试过使用兼容性视图?