jQuery несовместимый. удалить по классу на элементе с несколькими классами - PullRequest
0 голосов
/ 14 марта 2010

У меня есть страница, где сообщения и связанные с ними элементы (ответы, пересылки и т. Д.) Имеют общий класс на основе идентификатора базы данных родителя.

Например

<code><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>

иногда мне нужно удалить все элементы с одинаковым идентификатором, поэтому у меня изначально было

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

но иногда это не удаляет все идентификаторы, потому что идентификаторы должны быть уникальными. Поэтому я добавил идентификатор в качестве класса. сейчас я пользуюсь

   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 голосов
/ 23 марта 2010

Похоже, что это была проблема, когда функция вызывалась с использованием переменной, которая уже была определена. Я не осознавал, что это вызовет проблему.
Например:

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();
}

, кажется, работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...