Safari, дублирующий данные узла XML в Jquery - PullRequest
0 голосов
/ 18 января 2012

У меня есть следующий код JavaScript:

$(xml).find("question").each(function(){ 

if($(this).attr("id") == stage){                                      

    rule1 = $(this).find("sentence[id='1']").text();
    rule2 = $(this).find("sentence[id='2']").text();

}
                                      });

Затем я использую .innerHTML, чтобы вставить текст в div в html-документе. Этот процесс прекрасно работает во всех распространенных браузерах, кроме Safari, где предложение 2 дублируется в div.

РЕДАКТИРОВАТЬ Благодаря комментарию Фредерика я смог изменить свой существующий XML и код, чтобы это работало в Safari. EDIT

Старый XML:

<test>
 <question id="1">
  <sentence id="1">Even Odd Odd</sentence>
  <sentence id="2">8 3 5</sentence>
 </question>
 <question id="2">
  <sentence id="1">Odd Odd Odd</sentence>
  <sentence id="2">5 1 7</sentence>
 </question>
 <question id="3">
  <sentence id="1">Even Even Even</sentence>
  <sentence id="2">9 7 3</sentence>
</question>
</test>

Новый XML:

<test>
 <question id="q1">
  <sentence id="q1s1">Even Odd Odd</sentence>
  <sentence id="q1s2">8 3 5</sentence>
 </question>
 <question id="q2">
  <sentence id="q2s1">Odd Odd Odd</sentence>
  <sentence id="q2s2">5 1 7</sentence>
 </question>
 <question id="q3">
  <sentence id="q3s1">Even Even Even</sentence>
  <sentence id="q3s2">9 7 3</sentence>
</question>
</test>

Мой вывод для вопроса 1, например, будет Четным Нечетным Нечетным (предложение 1)

8 3 58 3 5 (предложение 2)

Кто-нибудь испытывал что-либо подобное этому и мог бы предложить исправление / обходной путь?

Спасибо за ваше время.

РЕДАКТИРОВАТЬ Спасибо, Фредерик! EDIT

1 Ответ

0 голосов
/ 07 ноября 2013

Если вы не можете изменить источник XML и если ваши идентификаторы не соответствуют порядку индекса узлов (как в моем случае), сначала получите индекс вашего узла с помощью команды find ('data [id = XX]'). Index () и доступ к функции text () с помощью поиска eq (). Итак:

$(this).find("sentence").eq($(this).find("sentence[id='2']").index()).text();

Надеюсь, эта помощь.

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