以下代码适用于jquery 1.7.2。但它与jquery 1.9.1没有关系。它会出现" Uncaught TypeError的错误。对象[object Object]没有方法' live'。
我该如何解决这个问题?
<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>
答案 0 :(得分:2)
自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()
有三个参数。