Javascript .live错误

时间:2015-09-28 14:49:10

标签: javascript jquery

升级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';
});

2 个答案:

答案 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的弃用侦听器我认为