2014-03-25 3 views
0

У меня проблемы с функциями jQuery prepend() и after(), которые не выполняются так, как ожидалось, в Safari или IE. Тем не менее в любом из инструментов разработчика не должно быть никаких предупреждений. Этот фрагмент кода отлично работает как в Chrome, так и в Firefox.jQuery DOM-манипуляция не работает в IE или Safari

То, что я пытаюсь (и преуспел) выполнить, состоит в том, чтобы отсортировать пару строк через jQuery. Первый элемент в массиве будет перемещен как первый дочерний элемент #tbody, а остальные будут отсортированы друг за другом.

var $previousCountry = null; 
var group_id = "A"; 
for (var i = 0; i < countries.length; i++) { 
    var $country = $('#trcountry-' + countries[i].id); 
    if (i === 0) { 
     $('#tbody-' + group_id).prepend($country); //Problem 1 
    } 
    else { 
     $previousCountry.after($country); //Problem 2 
    } 
    $previousCountry = $country; 
} 

Пример HTML-код:

<table> 
    <tbody id="tbody-A"> 
     <tr id="trcountry-3"><td></td></tr> <!-- In fact a lot of td:s --> 
     <tr id="trcountry-2"><td></td></tr> 
     <tr id="trcountry-1"><td></td></tr> 
    </tbody> 
</table> 

Как ни странно, я был в состоянии выполнить тот же кусок кода - $('#tbody-A').prepend('#trcountry-1'); - через инструменты для разработчиков всех четырех браузеров, и это было успешным каждый раз.

Что может вызвать эту проблему?

+0

Пожалуйста, поделитесь соответствующим HTML. – Blazemonger

+0

@Blazemonger Я редактировал вопрос. – Nurp

+1

Откуда вы получаете 'group_id'? – MMM

ответ

0

Я просто понял это. И я чувствую себя немного стыдно.

Проблема была в том, что моя функция сортировки была настроена неправильно, что привело к тому, что Safari и IE предоставили мне несортированные данные - таким образом, добавление было сделано в том же порядке, что и раньше, приводя меня к предположению, что манипуляции DOM пошли не так.

Извлеченный урок.

0

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

$(document).ready(function() 
    { 
     $("#myTable").tablesorter(); 
    } 
); 

Url: http://tablesorter.com/docs/#Demo

+0

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

+0

Это должен быть комментарий, а не ответ. – Blazemonger

Смежные вопросы