我有一个图像,点击时需要抓取图像父div前面的div的ID。 prev()方法返回一个对象,但ID始终未定义。这就是我所拥有的:
function getParentDiv(thisitem,action) {
while (thisitem && (thisitem.tagName != "DIV" || !thisitem.id))
thisitem = thisitem.parentNode;
if (thisitem) checkForSibling(thisitem);
}
function checkForSibling(thisitem) {
var thisDivId = thisitem.id;
var sibling = $("#"+thisDivId).prev("div").attr("id");
}
为什么兄弟姐妹总是未定义?
编辑:
我正在我们工作的系统的约束下工作,因此必须从应用程序外部的位置托管javascript并在那里调用函数(不确定这是否有所不同)。这是我如何创建一个包含调用上述函数的图像的新div:
function createNewTextElementDiv(divName, placeHolder, elType, elSize, elSpacing) {
document.getElementById(placeHolder).innerHTML += "<div id='"+divName+"'><table width='465'><tr><td width='170px' valign='top'><span class='smallgreybold'>Text Element</span> <span class='mediumorangebold' style='font-size: 20;'>+</span></td><td width='295px' align='right' valign='center'><img src='/html/106789/arrow-up.png' style='border:0; height:20px; width:20px; background-color:transparent' onclick='getParentDiv(this,\"Up\")'></img> <img src='/html/106789/arrow-down.png' style='border:0; height:20px; width:20px; background-color:transparent' onclick='getParentDiv(this,\"Down\");'></img> <img src='/html/106789/remove-button.png' style='border:0; height:20px; width:20px; background-color:transparent' onclick='getParentDiv(this,\"Remove\");'></img></td></tr></table><span class='smallgrey'>Text Type: </span><span class='smallgreybold'>"+elType+"</span><span class='smallgrey'> Text Size: </span><span class='smallgreybold'>"+elSize+"</span><span class='smallgrey'> Spacing: </span><span class='smallgreybold'>"+elSpacing+"</span><br><hr></div>"; }
应用程序中有一些静态div以及我正在创建的那些静态div,因此我需要父级之前的div的Id。提前谢谢。
答案 0 :(得分:1)
请像这样使用:
function checkForSibling(thisitem) {
var thisDivId = thisitem.id;
var sibling = $("#"+thisDivId).parent().prev("div").attr("id");
}
需要添加.parent()