jQuery content () вызывает проблемы в IE - PullRequest
1 голос
/ 21 декабря 2010

Я использую функцию contents () в jQuery для получения некоторого текста в LI, который я не могу нацелить напрямую с помощью span или другого селектора.

Код, который я написалследующим образом:

$('#tierArray_' + tierId).contents().each(function(i, node) {
  if (node.nodeName == "#text") {
    node.textContent = name;
  }
});

Это отлично работает в Firefox и изменяет целевой текст на то, что установлено в «name».В IE, однако, я получаю следующие ошибки:

«Объект не поддерживает это свойство или метод»

Похоже, это относится к строке «node.textContent = name», как когда я комментируюв этом случае ошибка исчезает.

В двух словах, я просто пытаюсь заменить некоторый текст вновь созданным текстом, разметка HTML выглядит следующим образом:

<li class="ui-state-default" id="tierArray_105">
  <span style="display: block;" id="revoke_105">
    <a class="tierStatus" title="Revoke" href="#">Revoke</a> | 
    <a class="tierEdit" id="edit_tier_105" title="Bla 3aaa11" href="#">Edit</a>
  </span>
  <span style="display: none;" id="active_105">
    <a class="tierStatus" title="Activate" href="#">Activate</a> | 
    <a class="tierEdit" id="edit_tier_105" title="Bla 3aaa11" href="#">Edit</a>
  </span>
  Bla 3aaa11
</li>

Таким образом, текст послепоследний промежуток (Bla 4aaa11) должен быть заменен новым текстом.

Ответы [ 3 ]

2 голосов
/ 21 декабря 2010

Internet Explorer не поддерживает свойство textContent .

Однако, так как вы хотите заменить только содержимое текстового узла, вы можете использовать вместо nodeValue :

$("#tierArray_" + tierId).contents().each(function(i, node) {
    if (node.nodeName == "#text") {
        node.nodeValue = name;
    }
});
1 голос
/ 21 декабря 2010

Используйте data или nodeValue вместо:

node.data = name;
node.nodeValue = name;

Оба широко поддерживаются в браузерах:

Quirksmode: nodeValue

Quirksmode: данные

1 голос
/ 21 декабря 2010

.textContent не поддерживается IE. Возможно, вам повезет, установив .innerText в IE вместо:

if(typeof(node.textContent) != 'undefined'){
  node.textContent = name;
} else {
  node.innerText = name;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...