Jquery удалить div, не равные результатам поиска - PullRequest
0 голосов
/ 03 марта 2012

Оригинальный вопрос: здесь При поиске мне нужно изменить результаты по строкам, которые равны поиску val ();

Для этого примера давайте предположим, что нам нужно 90042.

Текущий js:

(function($) {

            $(document).ajaxComplete(function(e, xhr, settings) {
                var zip = ($("#edit-field-zip-value").val());

                $('.zip div').filter(function() {
                    return $(this).text() == zip;
                 }).css('color','red');

            });

        }(jQuery));

Разметка:

<table>
 <tbody>
   <tr>
    <td>
      <div class="zip">
       <div style="color: red">90042</div>
       <div>90052</div>
       <div>90062</div>
       <div>90072</div>
       <div>90082</div>
      </div>
    </td>

    <td>
     <div class="marker">
      <div>foo</div>
     </div>
    </td>

    <td>
     <div class="dma">
      <div>Pheonix</div>
      <div>Flagstaff</div>
      <div>Tucson</div>
      <div>Lipsum</div>
      <div>Goro</div>
     </div>   
    </td>
   </tr>
   </tbody>
   </table>

Конечной целью здесь является удаление всех div'ов, кроме 90042, foo и pheonix.

Примерно так:

<table>
 <tbody>
   <tr>
    <td>
      <div class="zip">
       <div style="color: red">90042</div>
      </div>
    </td>

    <td>
     <div class="marker">
      <div>foo</div>
     </div>
    </td>

    <td>
     <div class="dma">
      <div>Pheonix</div>
     </div>   
    </td>
   </tr>
   </tbody>
   </table>

У меня такое ощущение, что результаты моих вопросов приведут к неравномерным строкам, поэтому может потребоваться добавить конечные результаты в новые элементы div или таблицу.(Здесь может быть что-то не так)

Ответы [ 2 ]

2 голосов
/ 03 марта 2012

Итак, ответив на комментарий @DonZacharias, вы можете отформатировать HTML-код следующим образом:

<table>
 <tbody>
   <tr>
    <td class="zip">90042</td>
    <td class="marker">foo</td>
    <td class="dma">Pheonix</td>
   </tr>
   <tr>
    <td class="zip">90043</td>
    <td class="marker">foo</td>
    <td class="dma">Arizona</td>
   </tr>
  </tbody>
</table>

, а затем код станет

var zip = 90042;
$('td.zip').not(function() { return $(this).text() == zip; }).parents('tr').remove();

, в противном случае вы должны найти индексдива, который вы ищете.Это не очень хорошая идея, но если вы настаиваете, это должно сделать это:

var zip = 90042;
var index = -1;
$('.zip div').each(function(i,el) { if ($(el).text() == zip) { index = i; return false; } });
if (index != -1) {
    $('.zip, .dma, .marker').each(function(i, el) {
        $(el).find('div').not(':eq('+index+')').remove(); 
    });
}
0 голосов
/ 03 марта 2012

вот код для удаления всех элементов div кроме того, что вы указали.

$("td > div > div").not(":first-child").remove(); 

См. Это в действии здесь .Это то, что вы ищете?

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