2012-01-19 4 views
1

Есть ли причина, почему эта функция начала:JQuery проблема с .each()

$(".inner").each(function() { 

неудачи бы обрабатывать все DIV с классом inner на странице полной:

<div class="inner"> 

?

Это мой главный вопрос. Я довольно много отлаживался в течение последних 24 часов, и я пришел к выводу, что функция jQuery даже не обрабатывается в любом месте, где это необходимо. Это был мой простой тест:

$(function() { 
    $(".inner").each(function() { 
     var inner = $(this); 
     var plusMore = $("<div>HELLO!!!</div>"); 
     plusMore.insertBefore($(inner)); 
    }); 
}); 

На идентичных строк кода внутри таблицы, я только получаю этот код функции (и посмотреть «ПРИВЕТ !!!») на нескольких строк таблицы. Я просто не могу понять ...

---- ОБНОВЛЕНИЕ ДЛЯ HTML/Smarty ----

<td> 
    {if $results[i].people} 
     <div class="outer peoplecol"> 
      <div class="inner"> 
       {foreach from=$results[i].people item=people} 
        <div style="line-height:12px; margin-bottom:10px;"> 
         {if $people.pending eq 0} 
          <a href="Editpeople.php?tid={$people.id}" title="People Details" style="text-decoration:none"> 
         {/if} 
         {$people.firstName} {$people.lastName} 
         {if $people.pending eq 0} 
          </a> 
         {/if} 
        </div> 
       {/foreach} 
      </div> 
     </div> 
    {else} 
     <div class="outer peoplecol"> 
      None 
     </div> 
    {/if} 
</td> 

Кроме того - я использую JQuery TableSorter с этим. Я просто пытался отключить, и это сработало, так что это должно быть столкновение с этим ...!

--- ОБНОВЛЕНИЕ ДОБАВЛЕНИЯ ТАБЛИЦЫ СОРТЕР КОД ----

$(document).ready(function() { 
    // TableSorter 
    if ($("#dt-results").find("tbody").find("tr").size() > 0) 
    { 
     $("#dt-results") 
     .tablesorter({ 
         widgets: ['zebra'], 
         sortList: [[0,1]], 
         headers: { 
          1: { 
           sorter:'currency' 
          } 
         },    
         textExtraction: function(node) { 
          if ($(node.innerHTML).hasClass('outer') && $(node.innerHTML).hasClass('peoplecol')) { 
           if ($.trim($(node).text()) == 'None') { 
            return 'z'; //so that none comes last 
           } 
          } 
          return $(node).text(); 
         } 
     }) 
     .tablesorterPager({container: $("#pager")}) 
     .tablesorterFilter({filterContainer: $("#filter-box"), 
         filterClearContainer: $("#filter-clear-button"), 
         filterCaseSensitive: false, 
         filterWaitTime: 10}); 
    } 

}); 
+1

Просто сторона примечания: поскольку вы делаете это 'var inner = $ (this);' вам не нужно делать это снова здесь: '$ (inner)' – ctcherry

+0

Правильно ли все ваши разметки? Закрытие тегов и т. Д. Вы пробовали '$ (« div.inner »). Each()'? – Chris

+0

Вы можете отправить образец HTML-кода, который не обрабатывается? Возможно, опубликуйте его по адресу http://jsbin.com –

ответ

0

Проблема была связана с тем, как JQuery TableSorter/Пейджер взаимодействовал с пустыми ячейками в таблице. Это вызывало некоторую проблему с остальной частью jQuery на странице. Я никогда не выяснял, почему именно это вызвало проблемы - но пока я форсировал символы (небелые пробелы), все работает хорошо.