为什么JQuery Prev()对象没有给我一个ID?

时间:2016-03-15 12:51:42

标签: jquery

我有一个图像,点击时需要抓取图像父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>&nbsp;<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>&nbsp;&nbsp;<img src='/html/106789/arrow-down.png' style='border:0; height:20px; width:20px; background-color:transparent' onclick='getParentDiv(this,\"Down\");'></img>&nbsp;&nbsp;<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'>&nbsp;&nbsp;Text Size: </span><span class='smallgreybold'>"+elSize+"</span><span class='smallgrey'>&nbsp;&nbsp;Spacing: </span><span class='smallgreybold'>"+elSpacing+"</span><br><hr></div>"; }

应用程序中有一些静态div以及我正在创建的那些静态div,因此我需要父级之前的div的Id。提前谢谢。

1 个答案:

答案 0 :(得分:1)

请像这样使用:

function checkForSibling(thisitem) {
    var thisDivId = thisitem.id;
    var sibling = $("#"+thisDivId).parent().prev("div").attr("id");
}

需要添加.parent()