Jquery IE8上架不起作用

时间:2010-02-15 14:19:40

标签: jquery internet-explorer

以下代码段在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 个答案:

答案 0 :(得分:3)

2件事:

  1. <input>
  2. 旁边不能有<td>
  3. 如果可以(你不能!),请使用兄弟姐妹:

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

  4. 您需要将隐藏的输入重新定位到有效位置。

答案 1 :(得分:0)

你在生活()呼叫中错过了结束语:

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

答案 2 :(得分:0)

假设他们都处于同一级别,你需要再多prev个电话......但他们甚至不是兄弟姐妹。输入与td不在同一a内,因此无法正常工作。此外,输入需要在td yu cant jsut中,并且在表格结构中具有它的优势。

答案 3 :(得分:0)

在使用直播活动时,我发现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;
});

希望这就是你要找的东西

答案 4 :(得分:0)

我发现了一个案例,其中prev()在IE8上没有按预期工作。我发现使用prevAll(“selector:eq(0)”)确实可以替代prev(“selector”)。