jquery
  • jquery-selectors
  • 2012-07-10 112 views 3 likes 
    3

    我有一个在document.ready()中调用的函数,可以创建跨度。如何在动态创建的DOM元素上使用addClass/removeClass

    function configureContentSelector() { 
        for (j=0; j<centerContent.length; j++) 
        { 
         var content = "<span class='contentSelector' onclick='changeContent(" + j + ")' id='span'" + j + ">" + j + "</span>"; 
         $("#contentSelectorArea").html($("#contentSelectorArea").html() + content); 
    
        } 
    

    注意跨度ID-ED作为span0,SPAN1等

    在一个单独的功能时,无关的跨度触发一个事件我要处理的跨度类,称为(addClass( )removeClass())

    $("#" + "span" + i).removeClass("contentSelector"); 
    $("#" + "span" + i).addClass("contentSelectorSelected"); 
    

    但是,这是行不通的。我相信这个问题与span是动态创建的事实有关,但我不知道如何解决这个问题。

    在此先感谢您的帮助。

    +0

    一次跨度插入DOM可以调用'addClass'或'removeClass'他们 – Rafay 2012-07-10 16:10:14

    +0

    你能使用委托()? – SpaceBeers 2012-07-10 16:11:27

    +0

    你在操作类的功能是什么?在你的add/removeClass中'i'的值是多少? – 2012-07-10 16:12:12

    回答

    3

    创建错误id S(所有的人都ID =跨度):

    var content = "<span class='contentSelector' onclick='changeContent(" + j + ")' id='span'" + j + ">" + j + "</span>"; 
    

    试试这个:

    var content = "<span class='contentSelector' onclick='changeContent(" + j + ")' id='span" + j + "'>" + j + "</span>"; 
    

    BTW你的报价应该是逆转

    var content = '<span class="contentSelector" onclick="changeContent(' + j + ')" id="span' + j + '">' + j + '</span>'; 
    
    +0

    我觉得自己像个假人!谢谢。 – user1515356 2012-07-12 19:38:18

    +0

    顺便说一句:我认为引号的顺序并不重要(单倍内或反之亦然)。 – user1515356 2012-07-12 19:39:14

    +0

    好吧,它似乎并不重要([检查此](http://stackoverflow.com/questions/2373074/single-vs-double-quotes-vs)),大多数时候(以我的经验)人们使用' “'在html属性中,所以(至少对我来说)感觉更自然*。 – Zbigniew 2012-07-13 15:10:17

    2

    我会删除ID并使用data-*属性(Theres语法错误与您的ID声明无论如何)。

    var content = "<span class='contentSelector' onclick='changeContent(" + j + ")' data-spanid='" + j + "'>" + j + "</span>"; 
    

    然后你可以选择使用data-*属性:

    $("span[data-spanid='" + i + "']"); 
    
    3

    我觉得这里有个错误

    id='span'" + j + ">" 
    

    变化

    id='span" + j + "'>" 
    

    ,并使用

    $("#contentSelectorArea").append(content); 
    
    1

    在创建控件的过程中出现了一个简单的错误。检查创建的id属性中的引号。

    使用这个,它会正常工作。

    var content = "<span class='contentSelector' onclick='changeContent(" + j + ")' id='span" + j + "'>" + j + "</span>"; 
    
    相关问题