首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >事件不适用于动态元素的Jquery

事件不适用于动态元素的Jquery
EN

Stack Overflow用户
提问于 2014-03-13 11:56:00
回答 5查看 595关注 0票数 0
代码语言:javascript
复制
$(".spanCont:first .collection_shop").on("click",function(){
            var current_item = $(this);
            $.ajax({
                url: "ajax/abc.php",
                type: "POST",
                dataType: 'html',
                data: {collection_id: current_item.attr("value")},
                beforeSend: function(xhr) {
                    current_item.replaceWith("<div id='temp_div'></div>");
                }
            }).done(function(data){
                $(".spanCont:first .span-2, .spanCont:first input").remove();
                $("#temp_div").replaceWith(data);
            });
        });

这段代码应该适用于使用类.collection_shop的所有静态和动态单击元素,但它仅适用于静态元素。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-03-13 11:57:27

为此,您应该使用https://api.jquery.com/on/

代码语言:javascript
复制
$(document).on("click",".spanCont:first .collection_shop",function(){
   //some operation
});

它帮助您为动态元素附加处理程序。

票数 1
EN

Stack Overflow用户

发布于 2014-03-13 11:56:51

对于动态元素,需要使用on()的其他版本(删除)。将事件委托给动态元素的静态父级,或者可以使用文档/正文等。

代码语言:javascript
复制
$(document).on("click", ".spanCont:first .collection_shop", function(){
    var current_item = $(this);
    $.ajax({
        url: "ajax/abc.php",
        type: "POST",
        dataType: 'html',
        data: {collection_id: current_item.attr("value")},
        beforeSend: function(xhr) {
            current_item.replaceWith("<div id='temp_div'></div>");
        }
    }).done(function(data){
        $(".spanCont:first .span-2, .spanCont:first input").remove();
        $("#temp_div").replaceWith(data);
    });
});

你有

代码语言:javascript
复制
$(".spanCont:first .collection_shop").on("click",function(){

你需要,为事件授权

代码语言:javascript
复制
$("static-parent-selector").on("click", .spanCont:first .collection_shop, function(){

委托事件的优点是它们可以处理以后添加到文档中的子类元素中的事件。通过选择在附加委托事件处理程序时保证存在的元素,可以使用委托事件来避免频繁附加和删除事件处理程序( jQuery文档 )。

票数 2
EN

Stack Overflow用户

发布于 2014-03-13 11:56:54

使用事件委托

代码语言:javascript
复制
$(document).on("click",".spanCont:first .collection_shop",function(){
//code
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22377865

复制
相关文章

相似问题

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