jQuery不一致。在具有多个类的元素上按类删除

时间:2010-03-14 00:37:08

标签: jquery-selectors

我有一个页面,其中消息和相关元素(响应,转发等)都根据父级的数据库ID共享一个类。

例如

<pre>
<div id="recentMessages">
 <div id="a3" class="message a3">this is a message</div>
    <div id="a5" class="message a5">this is another message</div>
</div>
<div id="recentComments">
    <div id="a3" class="comment a3">this is a comment</div>
    <div id="a5" class="comment a5">this is another comment</div>
</div>
<div id="recentActions">
    <div id="a3" class="action a3">tim posted a new message</div>
    <div id="a4" class="action a4">sara forwarded a message to john</div>
</div>
</pre>

有时我需要删除所有具有相同ID的元素,所以我最初有   

    jQuery('div#'+id).remove();

但有时候不会删除所有ID,因为ID应该是唯一的。 所以我把id添加为一个类。现在我用

   jQuery('div.'+id).remove();

但这似乎有效率约为80%,有时div不会被删除。 我不确定问题是否因为div有多个类,但是我需要这些类,因为这是我在有人点击时引用元素的方式。 例如,

jQuery('div.message').click(function(){
     get the id, send it to the server and get the message
 });

我在这里做错了吗?或者有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

看起来这是一个使用已定义的变量调用函数的问题。我没有意识到这会引起问题 例如:

jQuery('div','div#recentActions').click(function(){
   var removeId=jQuery(this).attr('id').replace('','a');
   removeDiv(removeId);
});

function removeDiv(removeId){
   jQuery('div#a'+removeId).remove();
}

我不能肯定这是问题所在,而是将功能更改为:

function removeDiv(cancelId){
   jQuery('div#a'+canceld).remove();
}

似乎正在发挥作用。