jQuery addClass не работает

Я пытаюсь использовать addClass, чтобы дать мне таблицы в полоску зебры на моем шаблоне Joomla. Im используя следующий код:

 <script>
  jQuery(function($) {
    $("tr:odd").addClass("odd");
  });
</script>

я смог использовать селектор tr:odd для динамического добавления css в строки таблицы, но когда я использую функцию addClass, она просто не работает (я проверил исходный код, и ни одна из строк таблицы не имеет класса "odd").

понятия не имею, что я могу делать неправильно, был бы признателен за любую помощь.

5 ответов


Итак, вы знаете, изменения в DOM с Javascript не отражаются при просмотре источника.

этот код должен работать, если ваш CSS выглядит так...

tr.odd td
{
    background:#070;
}

вот два способа / метода для создания полосатой зебры, один способ с помощью jQuery и один способ с помощью CSS3.

Первый метод-использование jQuery

HTML-код

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

<table id="zebra_triped" cellpadding="1" cellspacing="1" >
    <tr>
        <td>Lorem ipsum dolor sit amet</td>
        <td>Lorem ipsum dolor sit amet</td>
    </tr>
    <tr>
        <td>Lorem ipsum dolor sit amet</td>
        <td>Lorem ipsum dolor sit amet</td>
    </tr>
    <tr>
        <td>Lorem ipsum dolor sit amet</td>
        <td>Lorem ipsum dolor sit amet</td>
    </tr>
    <tr>
        <td>Lorem ipsum dolor sit amet</td>
        <td>Lorem ipsum dolor sit amet</td>
    </tr>
    <tr>
        <td>Lorem ipsum dolor sit amet</td>
        <td>Lorem ipsum dolor sit amet</td>
    </tr>
</table>

в CSS

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

<style type="text/css">
  html, body { font: 12px verdana; color: #333; }  
  table { background-color: white; width: 100%; }
  .oddRow { background-color:#ffcc00; } 
  .evenRow { background-color:#cccccc; }
</style>

jQuery

наконец, нам нужно создать код jQuery, который добавит классы CSS в теги tr, это достигается с помощью этого кода:

<script type="text/javascript">  
   $(document).ready(function() {  
   $("#stripedTable tr:odd").addClass("oddRow");  
   $("#stripedTable tr:even").addClass("evenRow");  
});  
</script>

первая строка выбирает нечетные теги tr внутри элемента с идентификатором zebra_triped и добавляет им класс "oddRow", последняя строка делает то же самое с четными строками, добавляя им класс"evenRow".

Второй метод-использование CSS

** мой любимый :)*

HTML-код

<div id="comments">
    <h3>Comments</h3>
    <div class="comments_body">
        <header>By: <a href="#"> Lorem ipsum </a></header>
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit,.</p>
    </div>
    <div class="comments_body">
        <header>By: <a href="#"> Lorem ipsum </a></header>
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, </p>
    </div>
    <div class="comments_body">
        <header>By: <a href="#"> Lorem ipsum </a></header>
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, </p>
    </div>
    <div class="comments_body">
        <header>By: <a href="#"> Lorem ipsum </a></header>
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, </p>
    </div>
    <div class="comments_body">
        <header>By: <a href="#"> Lorem ipsum </a></header>
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, </p>
    </div>
</div>

в CSS

<style type="text/css">
  html, body { font: 12px verdana; color: #333; }
  table { background-color: white; width: 100%; }
  #comments { margin-top: 21px; padding-top: 10px; border-top: 1px solid #d7d7d7; }
  #comments .comments_body { display: table; padding: 10px; }

   #comments .comments_body:nth-child(odd) {
    padding: 21px;
    background: #E3E3E3;
    border: 1px solid #d7d7d7;
   -moz-border-radius: 11px; // support FireFox which runs on Mozilla engine
   -webkit-border-radius: 11px; // support Safari and Chrome which they run on WebKit engine
   // as usual IE is behind and no support for it yet, unless you need to hack it using Java Script.
  }
</style>

-МОЗ - border-radius: 11px; и -в WebKit-границы-радиус: 11px; Здесь я определяю радиус / круглый угол для границы контейнера для каждого угла. Это только одна строка, указывающая свойство radius для всех углов, но я могу указать конкретный угол, как показано ниже:

- moz -border-radius-bottomleft:11px;
- moz -border-radius-bottomright:11px;
- moz -border-radius-topleft:11px;
- moz -border-radius-topright:11px;

и

- webkit -border-radius-bottomleft:11px;
- webkit -border-radius-bottomright:11px;
- webkit -border-radius-topleft:11px;
- webkit -border-radius-topright:11px;

надеюсь, это поможет,

Ахмед


jQuery не изменяет исходный код HTML-документа, он изменяет структуру DOM (представление документа в памяти). Чтобы увидеть эти изменения, вы должны использовать плагин браузера, который показывает DOM документа (Firebug для Firefox, Developers Tools (F12) для IE).


попробуйте добавить класс td вместо этого вот так:

$("tr:odd td").addClass("odd");

 $('table tr').each(function() {
    if ($(this).find('td').eq(6).text() === 'Start') {
        $(this).addClass('tooltip');
    }
 });