以下代码段在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>
感谢任何帮助或更好的代码。
答案 0 :(得分:3)
2件事:
<input>
<td>
如果可以(你不能!),请使用兄弟姐妹:
var value = $(this).parent().siblings("input:hidden").val();
您需要将隐藏的输入重新定位到有效位置。
答案 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”)。