2012-07-15 81 views
3

我想仅在第一次点击时调用ajax以节省带宽,数据量非常大。下面是我的代码仅在第一次点击时触发Ajax

$('.id-list').click(function() { 
$.ajax({ 
    type: "POST", 
    url: "timesheet.php?action=idlist", 
    async: false, 
    success: function(rdata) { 
      $('.id-list').removeClass('id-list') //remove the class 
    } 
})  
}) 

检查的元素,除去class="id-list",但是当我再次点击它,它再次触发Ajax调用,我不希望发生的事情。

有什么办法可以实现这个吗? 谢谢。

回答

3

API .onehttp://api.jquery.com/one/

附加的处理程序,为元素的事件。处理程序每​​个元素最多执行一次。

$('.id-list').one('click', function() { 
    $.ajax({ 
    type: "POST", 
    url: "timesheet.php?action=idlist", 
    async: false, 
    success: function(rdata) { 
      $('.id-list').removeClass('id-list') //remove the class 
    } 
})  
}) 
+1

伟大的思想.... – mplungjan 2012-07-15 06:35:26

+0

@mplungjan谢谢! – genpet 2012-07-15 06:42:20

+0

@Tats_innit谢谢! – genpet 2012-07-15 06:42:42

0

http://api.jquery.com/live/

$('.id-list').live("click", function(){ 
$.ajax({ 
    type: "POST", 
    url: "timesheet.php?action=idlist", 
    async: false, 
    success: function(rdata) { 
     $('.id-list').removeClass('id-list') //remove the class 
    } 
}) 
}); 
+0

Live不推荐使用,即使它在移除类时可能会有效 – mplungjan 2012-07-15 06:34:50

2

http://api.jquery.com/one/

描述:附加的处理程序,为元素的事件。处理程序每​​个元素最多执行一次。

$('.id-list').one("click",function() { 
    $.ajax({ 
    type: "POST", 
    url: "timesheet.php?action=idlist", 
    async: false, 
    success: function(rdata) { 
             $('.id-list').removeClass('id-list') //remove the class 
    } 
    })       
}) 
相关问题