这些是我使用的一些相关HTML元素:
<TD id=Cell.0.0>
<DIV></DIV>
<IMG id=_Q0_C0_mrSingleImg src="radio.gif">
<INPUT type="checkbox" name=_QGender_C class=mrSingle id=_Q0_C0>
<LABEL for=_Q0_C0>
<SPAN class=mrSingleText >
some text
</SPAN>
</LABEL>
</TD>
在我的主JS文件中,我首先将此onClick方法分配给img元素:
function onImageClickSingle(event) {
// catch clicked img element
event = event || window.event;
var img = event.target || event.srcElement; // IE fix
if (img.nodeType == 3) img = img.parentNode; // firefix bug fix
var inputSibling = getNextSibling(img);
// some more code that involves working with inputSibling attributes...
}
正如您所看到的,在上面的函数中,我调用“getNextSibling”来获取图像兄弟,即输入元素。
由于代码必须支持旧版本的IE,我将这个“getNextSibling”函数添加到我的fix.js文件中,正如另一个堆栈溢出线程所建议的那样:
// IE 8 and less do not support nextSibling or previousSibling javascript properties
function getNextSibling(element) {
var sibling = $('#' + element.id + '').next();
return sibling;
}
我遇到的问题是,在调试代码时,我可以看到inputSibling变量确实包含“getNextSibling”返回的请求输入同级元素(id,checked,class name等,都被分配了一个值),但是当我尝试使用任何返回对象的attributs,它们都是未定义的。
任何人都知道为什么会发生这种情况?
答案 0 :(得分:0)
你的函数返回jQuery对象
function getNextSibling(element) {
var sibling = $('#' + element.id + '').next();
return sibling;
}
因此您可以使用attr()
访问属性inputSibling.attr('id')
或者如果你想继续使用JS访问风格,你需要
inputSibling.get(0).id