jQuery 1.9.1没有方法实时错误

时间:2014-03-25 01:33:07

标签: javascript jquery

以下代码适用于jquery 1.7.2。但它与jquery 1.9.1没有关系。它会出现" Uncaught TypeError的错误。对象[object Object]没有方法' live'。

我该如何解决这个问题?

enter image description here

<script>
$(document).ready(function(){

    var tablecont = $("#tablesorter1");
    var module = "category";

    function updateitem()
    {    
        $.ajax({
            type: "POST", 
            url: "http://localhost/tangen2014/index.php/category/admin/Ajaxgetupdate", 
            complete: function(data)
            {
                tablecont.html(data.responseText);
            }
        });
    }

        //on submit event
    $(".changestatus").live('click', function(event){
        event.preventDefault();
        var href = $(this).attr("href");
        var id =href.substring(href.lastIndexOf("/") + 1);
        $.ajax({
            type: "POST", 
            url: "http://localhost/tangen2014/index.php/kaimonokago/admin/changeStatus"+"/"+module+"/"+id,
            complete: function()
            {
                updateitem();
            }
        });  
    });
});
</script>

2 个答案:

答案 0 :(得分:2)

来自 upgrade guide

  

自jQuery 1.7以来,.live()方法已被弃用   在1.9中删除。我们建议升级代码以使用.on()方法   代替

所以你需要在这里使用 .on()

$('#tablesorter').on('click', ".changestatus", function(event){
    // Your code here
});

最好将事件委托给最近的静态父级而不是文档级别,以获得更好的性能。

答案 1 :(得分:1)

.live()方法已被弃用,因为它永远不会被弃用,并且在1.9中完全被淘汰。

使用:

    $(document).on('click', ".changestatus", function(event){

不是$(document);它可以是任何方便的容器元素。也就是说,任何元素都是“.changestatus”元素的父元素。

.live()方法是一个好主意,实施得很糟糕。有一段时间有.delegate(),它更像现代一体化.on()有三个参数。