首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >jQuery$(元素).每个函数都不能处理新添加的元素

jQuery$(元素).每个函数都不能处理新添加的元素
EN

Stack Overflow用户
提问于 2018-03-01 06:00:25
回答 1查看 0关注 0票数 0

我使用.each函数来迭代元素的循环列表。我有一个匹配元素的初始列表,每个元素都非常有用。但是我可以通过Ajax方法添加新元素...每个元素都不能处理这个新添加的元素?

我知道活动事件和为新添加的元素重新绑定事件,但是.每个事件都不是事件,我无法找到任何关于如何正确地使用它来影响新添加的元素的帮助。

如何解决这个问题?

代码语言:txt
复制
//Uploadify callback where I add new items
onComplete: function(event, queueID, fileObj, response, data)
{
    $(".blank").remove();
    $("#lib-contentWrap").append(response); 
}
});

//And my each loop where I loop the elements. All elements are 
wrapped inside the #lib-contentWrap div. And the looping begins 
if I change the state of a checkbox (=checkbox check/uncheck)!
$('#chk-selected').change(function(){
    if( $(this).is(':checked') ) {
        $(".lib-item").each(function () {
            if ( $(this).hasClass('item-selected') ) $(this).slideDown('fast');
        }); 
    }
    else {
        $(".lib-item").each(function () {
            if ( $(this).hasClass('item-selected') ) $(this).slideUp('fast');
        }); 
    }
});



Thanks,
Primoz
EN

回答 1

Stack Overflow用户

发布于 2018-03-01 15:22:15

这是因为在.each()运行时通过匹配元素的循环......当你调用它时,新元素不适合执行操作。解决方案:再次调用它,但只添加新元素。你需要.each()在你的ajax结果上调用相同的结果,并将结果的上下文限制为每个结果。

例如,如果你有这个目前:

代码语言:javascript
复制
$(".myDiv").each(function() {
 //stuff here
});

你需要在你的成功中调用相同的选择器和相同的代码(或者完成,不管你使用的是什么)ajax函数是这样的:

代码语言:javascript
复制
success: function(resp) {
  $(".myDiv", resp).each(function() { //each, but only on the new guys
   //stuff here (same as before)
  });
  //Do more stuff with your response...
}

这里的关键点在于, resp,它告诉jQuery选择与之前相同的元素,但仅限于第二个参数的上下文中,在这种情况下:你的ajax响应包含需要爱的新元素。

根据新的问题代码进行更新

首先,你可以在此缩短你的代码(可选不要求)

代码语言:javascript
复制
$('#chk-selected').change(function(){
    if($(this).is(':checked')) {
        $(".lib-item.item-selected").slideDown('fast');
    }
    else {
        $(".lib-item.item-selected").slideUp('fast');
    }
});

在回调中,触发相同的处理程序再次运行(这不会更改选择,只需触发处理程序即可运行)

代码语言:javascript
复制
onComplete: function(event, queueID, fileObj, response, data)
{
    $(".blank").remove();
    $("#lib-contentWrap").append(response); 
    $('#chk-selected', response).trigger('change');
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100007476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档