#jquery #if-statement #each #contains
#jquery #оператор if #каждый #содержит
Вопрос:
Попытка удалить то, что находится в классе ‘bnum’, ЕСЛИ заголовок (class name=’productnamecolor colors_productname’) содержит текст ‘True’.
В принципе, в приведенном ниже примере вы НЕ должны видеть никакого значения «Burkett Bucks» под «True Merchandiser Refrigerator», однако оно все равно должно быть во всех остальных:
<table width="300px">
<tr>
<td width="100%" valign="top"><a class="productnamecolor colors_productname" href=""> Star Griddle</a></td>
</tr>
<tr>
<td width="100%" valign="top"><table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="64%" valign="top"><font class="text colors_text rewardpoints"><span id="offers">Special Offers:</span><br>
<div class="bbucks"><img src="http://bit.ly/ihYMFL" id="bucks"> Earn <span class="bnum">2343</span> Burkett Bucks</div>
</font></td>
<td align="right" width="36%"></td>
</tr>
</tbody>
</table></td>
</tr>
<tr>
<td width="100%" valign="top"><a class="productnamecolor colors_productname" href=""> True Merchandiser Refrigerator</a></td>
</tr>
<tr>
<td width="100%" valign="top"><table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="64%" valign="top"><font class="text colors_text rewardpoints"><span id="offers">Special Offers:</span><br>
<div class="bbucks"><img src="http://bit.ly/ihYMFL" id="bucks"> Earn <span class="bnum">2343</span> Burkett Bucks</div>
</font></td>
<td align="right" width="36%"></td>
</tr>
</tbody>
</table></td>
</tr>
<tr>
<td width="100%" valign="top"><a class="productnamecolor colors_productname" href="">Generic Something</a></td>
</tr>
<tr>
<td width="100%" valign="top"><table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="64%" valign="top"><font class="text colors_text rewardpoints"><span id="offers">Special Offers:</span><br>
<div class="bbucks"><img src="http://bit.ly/ihYMFL" id="bucks"> Earn <span class="bnum">2343</span> Burkett Bucks</div>
</font></td>
<td align="right" width="36%"></td>
</tr>
</tbody>
</table></td>
</tr>
</table>
Проблема, с которой я сталкиваюсь, заключается в том, что он выполняет это для всех значений, я только хочу удалить значение под КАЖДЫМ заголовком, в котором есть слово ‘True’. Итак, я предполагаю, что что-то не так с моим КАЖДЫМ.
$(document).ready(function() {
$(".colors_productname:contains('True')").each(function () {
$('.bnum').remove(); });
});
Ответ №1:
вместо глобального селектора
$('.bnum')
вам нужно использовать текущий контекст каждого метода в вашей функции, принимая во внимание, что база не находится в том же tr, что и цель, нам нужно будет выполнить небольшой обход Dom.
$(".colors_productname:contains('True')").each(function () {
$(this).closest('tr').next('tr').find('.bnum').remove(); });
Комментарии:
1. Это тоже не сработало, я думаю, что все они действительно действительны, к сожалению, ‘Title’ и класс ‘bnum’ находятся в отдельных ‘TR’. возможно, именно здесь мы сталкиваемся с проблемой
2. Ах, пропустил это, HTML-код становился довольно беспорядочным на моем дисплее. Обновлено, чтобы выполнить правильный обход Dom перед удалением.
Ответ №2:
разве это не должно быть $(this).find('.bnum').remove()
или даже короче:
$(".colors_productname:contains('True') .bnum").remove()
Ответ №3:
Попробуйте это вместо:
$(document).ready(function() {
$(".colors_productname:contains('True')").each(function () {
$(this).find('.bnum').remove(); });
});
Комментарии:
1. В
.each()
вообще нет необходимости.