更改元素的属性后,我的选择器不起作用

时间:2014-07-14 17:48:54

标签: javascript jquery

<div>
    <div class="test" choice="0">item</div>
    <div class="list"></div>
</div>

JS

$(".test[choice='0']").click(function () {                             
    $(this).attr("choice", "1");
    var new_div = "<div>" + $(this).text(); +"</div>";
    $(".list").append(new_div);
});

点击&#34; item&#34;是&#34;选择&#34;属性集是&#34; 1&#34;并且在添加到第二个div之后,在单击之后,该项目不会添加到第二个div(按类&#34; list&#34;)但是我的选择器无法正常工作。

请帮助我

2 个答案:

答案 0 :(得分:0)

如果我理解您的问题,那么您可能正在寻找此代码,请尝试

<div>
    <div class="test" choice="0">item</div>
    <div class="list"></div>
</div>
<div id="secondDiv">here</div>
$(document).ready(function(){
    $(".test").click(function() {
       if($(this).attr("choice")==0)
       {
           $(this).attr("choice","1");
           alert("if");
           $("#secondDiv").append($(this).html());
       }
        else
        {
            alert("else");
        }
    });
});

现场演示http://jsfiddle.net/zV4SX/

谢谢

答案 1 :(得分:0)

听起来,在您将click更改为choice之后, 希望1处理程序解雇。问题是处理程序是根据您调用$(".test[choice='0']").click()时匹配的元素设置的 - 即使choice发生更改,处理程序也会保持连接状态。

如果您希望不发生这种情况,请仅在点击时附加的元素

$(document).on('click', ".test[choice='0']", function () {                             
  $(this).attr("choice", "1");
  var new_div = "<div>" + $(this).text() +"</div>";
  $(".list").append(new_div);
});

示例:http://jsfiddle.net/t3DLv/1/