相关疑难解决方法(0)

jQuery 1.9 .live()不是一个函数

我最近将jQuery从1.8升级到2.1.我突然发现.live()停止工作.
我收到了错误TypeError: $(...).live is not a function.

有什么方法可以用来代替.live()吗?

javascript jquery function live deprecated

228
推荐指数
9
解决办法
29万
查看次数

jQuery .on函数用于将来的元素,因为.live已被弃用

我需要为click未来<div>元素的事件添加一个处理程序,它还不存在.通常情况下,我会使用jQuery的.live函数来处理这个问题,但它现在似乎已被弃用了.on.

.on以这种方式使用该方法,jQuery建议设置selector参数,以允许创建委托事件,并提供此示例代码:

$("#dataTable tbody").on("click", "tr", function(event){
    alert($(this).text());
});
Run Code Online (Sandbox Code Playgroud)

这一切都很好,但是我为他的初始选择器添加了#dataTable tbody什么呢?请注意,$.on()这不起作用.

jquery

171
推荐指数
2
解决办法
9万
查看次数

jQuery:如何用.on替换.live?

可能重复:
jQuery 1.7 - 将live()转换为on()

根据jQuery API(http://api.jquery.com/on/),不推荐使用'live'函数,建议使用'on'代替.但是当我在代码中用'on'替换'live'时,jQuery再也找不到添加的元素了:

这有效(但已弃用):

$('li.bibeintrag').live('click', function(){
alert('myattribute =' + $(this).attr('myattribute'));
});
Run Code Online (Sandbox Code Playgroud)

这是来自'on'的API的示例:

$("#dataTable tbody tr").on("click", function(event){
    alert($(this).text());
});
Run Code Online (Sandbox Code Playgroud)

当我将我的代码更改为此('live'替换为'on')时它不再起作用(jQuery将找不到以后添加的元素(例如with append)):

$('li.bibeintrag').on('click', function(){
alert('myattribute =' + $(this).attr('myattribute'));
});
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?有人可以帮帮忙吗?

jquery

49
推荐指数
2
解决办法
3万
查看次数

jQuery on()方法不绑定像live()这样的事件

如上所述http://api.jquery.com/live/:

从jQuery 1.7开始,不推荐使用.live()方法.使用.on()附加事件处理程序.

对.而不是

$('.dynamicallyCreatedElement').live('click', function(){
  console.log('click');
});
Run Code Online (Sandbox Code Playgroud)

我应该用:

$('.dynamicallyCreatedElement').on('click', function(){
  console.log('click');
});
Run Code Online (Sandbox Code Playgroud)

但是,它不会将事件绑定到on()调用后创建的元素.那么它真的更好live()吗?

我错过了什么吗?

jquery

30
推荐指数
2
解决办法
9508
查看次数

jQuery - 如何使用"on()"方法而不是"live()"?

我用于live()生成的页面和框架.但是在jQuery 1.9此函数中已弃用且不起作用.

我使用on()而不是,live()但这种方法工作一次,并不在帧中工作.

我的代码看起来像这样:

  $("#element").live('click',function(){
    $("#my").html(result);
   });
Run Code Online (Sandbox Code Playgroud)

解决办法是什么?

javascript jquery deprecated jquery-on

26
推荐指数
1
解决办法
4万
查看次数

Jquery .on与.live

我知道.live()现在已经弃用但我似乎无法改变它并保留功能.

我只是对.on()jQuery中的函数有一个快速的问题.我现在在这里使用.live()

像这样:

$('table tr th').live("click", function() {
});
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试.live().on()它替换它不再像它应该的那样工作时.

我试过投入

$('table tr th').on("click", function() {
});
Run Code Online (Sandbox Code Playgroud)

以及

$('table tr').live("click", "th", function() {
});
Run Code Online (Sandbox Code Playgroud)

$('table tr').delegate("th", "click", function() {
});
Run Code Online (Sandbox Code Playgroud)

但无济于事.

为什么这样做以及我可以采取哪些步骤使其正常工作?

jquery

24
推荐指数
2
解决办法
1万
查看次数

更新到Jquery 1.9.0时,jquery.unobtrusive-ajax插件坏了

可能重复:
jQuery 1.7 - 将live()转换为on()

//解决方案:我只是简单地替换了四次出现,如建议的批准答案和不显眼的ajax插件已启动并再次使用jquery 1.9.0

更新//观察底部标记答案的注释,这是解决此问题的最佳方法.

//原帖:我升级到jQuery 1.9.0,但随后不引人注意的ajax插件因为他们弃用了live方法而失败了.我试图像这样替换它,因为升级修复了我的另一个错误.但是,它不起作用.我只是简单地用以下方式取代了:

$("a[data-ajax=true]").on("click", function (evt) {
        evt.preventDefault();
        asyncRequest(this, {
            url: this.href,
            type: "GET",
            data: []
        });
    });

    $("form[data-ajax=true] input[type=image]").on("click", function (evt) {
        var name = evt.target.name,
            $target = $(evt.target),
            form = $target.parents("form")[0],
            offset = $target.offset();

        $(form).data(data_click, [
            { name: name + ".x", value: Math.round(evt.pageX - offset.left) },
            { name: name + ".y", value: Math.round(evt.pageY - offset.top) }
        ]);

        setTimeout(function () {
            $(form).removeData(data_click);
        }, 0);
    });

    $("form[data-ajax=true] :submit").on("click", function (evt) {
        var name …
Run Code Online (Sandbox Code Playgroud)

jquery jquery-validate unobtrusive-ajax

15
推荐指数
1
解决办法
1万
查看次数

jquery 1.9.0直播功能?

jquery 1.9.0中没有live()函数,但jquery.unobtrusive.ajax.js已经使用了这个函数.

我应该使用旧版本的jquery还是其他方式?

jquery

13
推荐指数
2
解决办法
2万
查看次数

如何将jQuery 1.8.3中的"live"替换为jQuery 1.9?

我的Web框架自动将我的jQuery脚本更新为当前的最新版本1.9.

现在我的全部:

$(".myclass").live("click", function() {...
Run Code Online (Sandbox Code Playgroud)

不再工作了.我主要使用它与一些ajax调用,在我的页面中填充html.

我会知道如何在上一版本中替换此功能.一位朋友告诉我使用"on"代替,但"on"仍然固定在同一个元素上.

解释,在这个例子中(没有ajax),我使用"+"图标来显示"ul li list".

$(".closed").live('click', function(){
    $("#ul_list_"+$(this).attr('id')).addClass("displayed").removeClass("hidden").show();
    $(this).addClass("openned").removeClass('closed');
    $(this).html('<i class="icon-minus"></i>');
});

$(".openned").live('click', function(){
    $("#ul_list_"+$(this).attr('id')).addClass("hidden").removeClass("displayed").hide();
    $(this).addClass("closed").removeClass('openned');
    $(this).html('<i class="icon-plus"></i>');
});
Run Code Online (Sandbox Code Playgroud)

(我知道脚本不是最优化的,但它确实有效.我使用类来打开或关闭我的列表.如果访问者没有启用JS,则不会隐藏任何内容,所有折叠列表都会打开)

笔记:

javascript jquery jquery-1.8 jquery-1.9

8
推荐指数
2
解决办法
3万
查看次数

JQuery'on'与'live'

我有一个场景,JQuery'on'和'live'不会执行相同的操作.也许有人可以指出原因.我在我的项目中使用JQuery 1.7.2,在这个版本中,'live'已被'on'取代.我在列表页面中使用以下代码.基本上,此页面有一个字母栏,用户可以单击该栏并将加载具有该姓氏的所有客户端.我想通过ajax执行链接.

码:

$("a.listajax").on("click", function (e) {
    e.preventDefault();
    var url = $(this).attr("href");
    $("div.content").load(url + " div.content");
    return false;
});
Run Code Online (Sandbox Code Playgroud)

这里的问题是,当我第一次加载页面并单击链接时,一切正常.页面通过ajax加载.但是,之后所有的链接都失去了绑定,然后如果我点击任何链接,我会加载整个页面.

我将'on'替换为'live',并且链接开始表现完美,即使在后续点击中也是如此.

我错过了什么?

jquery

4
推荐指数
1
解决办法
173
查看次数