Jquery IE8 пред не работает - PullRequest
0 голосов
/ 15 февраля 2010

Следующий фрагмент кода работает в FF, но не в IE8. Prev возвращает правильный элемент, но не как объект, который поддерживает val (). Следовательно, я не могу запустить .val () на нем.

  <input type="hidden" name="data[De][1]" value="1" id="De1" />
   <td class="dr_name">document1</td>
   <td class="remove_dr" colspan="2" align="left">
  <a href="javascript:void(0)">Remove</a></td>

<script>
$(".remove_dr").live('click', function(e) {
  e.preventDefault();
  var value = $(this).prev().prev().val();
  alert(value);
}
</script>

Любая помощь или лучший кусок кода приветствуется.

Ответы [ 5 ]

3 голосов
/ 15 февраля 2010

2 вещи:

  1. Вы не можете иметь <input> рядом с <td>
  2. Если вы могли (и не можете!), Используйте братьев и сестер:

    var value = $(this).parent().siblings("input:hidden").val();

Вам необходимо переместить этот скрытый ввод в допустимое местоположение.

0 голосов
/ 05 октября 2010

Я обнаружил случай, когда prev () не работал должным образом на IE8. Я считаю, что использование prevAll («селектор: eq (0)») сработало вместо прежнего («селектор»).

0 голосов
/ 15 февраля 2010

При использовании живых событий я заметил, что есть разница для Firefox и IE. Вот почему я использую эту функцию для получения одинакового целевого события во всех браузерах:

getEventTarget = function(e){
    var targ;
    if (!e) var e = window.event;
    if (e.target) targ = e.target;
    else if (e.srcElement) targ = e.srcElement;
    if (targ.nodeType == 3) targ = targ.parentNode; 
    return targ;
}

так внутри

$(".remove_dr").live('click', function(e) {
  eventTarget = getEventTarget(e);
  // e.preventDefault(); you can return false instead
  var value = $(eventTarget).prev().prev().val();
  alert(value);
  return false;
});

надеюсь, что это то, что вы ищете

0 голосов
/ 15 февраля 2010

Вам нужен еще один prev звонок, при условии, что все они находятся на одном уровне ... но они даже не братья и сестры. вход не находится внутри того же td, что и a, поэтому он не будет работать. Кроме того, этот ввод должен быть в пределах td yu, но он должен быть случайным образом в структуре таблицы.

0 голосов
/ 15 февраля 2010

Вам не хватает закрывающей скобки при вызове live ():

$(".remove_dr").live('click', function(e) {
  e.preventDefault();
  var value = $(this).prev().prev().val();
  alert(value);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...