升级jquery后,我收到一个错误。 当我按照javascript执行时,我得到错误$(...)。live不是一个函数。我该如何解决这个问题?
$(function(){
$('input[type=text]').live('focus',function(e){
$(this).get(0).focus();
$(this).get(0).select();
//$(this).val('');
});
$('.blogImageSmall').bind('click', function(e){
var oldHref = $('#blogImageLink').attr('href');
var oldSrc = $('#blogImageLink').find('img').attr('src');
$('#blogImageLink').attr('href', $(this).attr('href'));
$('#blogImageLink').find('img').attr('src', $(this).attr('rel'));
$(this).attr('href', oldHref);
$(this).attr('rel', oldSrc); // .replace('150_', '35_')
$(this).find('img').attr('src', oldSrc.replace('150_', '35_'));
e.preventDefault();
return false;
});
// preload image:
var img = new Image(16,11);
img.src = '/images/ajax-loader.gif';
});
答案 0 :(得分:2)
.live()
API已被弃用了很长时间。你可以得到
$("some selector").live("event", function() { ... })
将其重写为
$(document).on("event", "some selector", function() { ... })
回调(事件处理程序)函数不需要为该转换进行更改,但如果您的jQuery代码足够大,则可能是函数中存在其他错误。
.live()
的问题在于构建jQuery对象的初始调用几乎完全是浪费了。也就是说,
$("some selector").live( ... )
在调用.live()
之前,jQuery当然会实际执行DOM搜索"某些选择器"。之后,.live()
将不关注库在DOM中找到的内容,只使用选择器字符串本身来建立委托事件处理程序(该行为的一部分基本上是.on()
所做的) 。新的API允许您执行与.live()
允许的相同的操作,以及它实际上更多的灵活性,因为您可以控制DOM中放置您的委派事件处理程序的位置。 (通常,document
很好,但有时你可能想要更细粒度的控制。)
答案 1 :(得分:0)
而不是'live'使用'on'。 'live'是来自jquery版本1.9的弃用侦听器我认为