获取DOM问题中的Previous Table的ID

时间:2011-03-18 16:01:59

标签: jquery dom element

当我使用下面的fn时,它返回当前表格..

我在切片中“调整”了索引以获得我正在寻找的结果。这是一个黑客,如果有我遗漏的东西,我正在寻找解释/答案。

每个表都嵌套在div或2中。但是使用选择器我会假设前一个是指定的选择器的前一个。

劈:              ? $ all.slice(0,$ all.index(this) -10 )。reverse()              :$ all.slice($ all.index(this) + 2

原始功能:

$.fn.reverse = function () {
    return this.pushStack(this.get().reverse(), arguments);
};

// create two new functions: prevALL and nextALL.
$.each(['prev', 'next'], function (unusedIndex, name) {
    $.fn[name + 'ALL'] = function (matchExpr) {
        // get all the elements in the body, including the body. 
        var $all = $('body').find('*').andSelf();

        // slice the $all object according to which way we're looking 
        $all = (name == 'prev')
             ? $all.slice(0, $all.index(this)).reverse()
             : $all.slice($all.index(this) + 1)
        ;
        // filter the matches if specified 
        if (matchExpr) $all = $all.filter(matchExpr);
        return $all;
    };
});

元素:这些是循环的,我试图使用向上,向下,向左,向右箭头键从一个表导航到下一个表..并且需要能够获得前一个&的ID。下一页

                    "<div id='divOuter" + div.divCode + "' class='BoxOuterDiv' >"
                    + " <div id='div" + div.divCode + "' class='BoxDiv' >"
                    + "         <table class='grid' id='" + div.divCode + "' width='100%'>"
                    + "             <tr>"
                    + "                 <td class='col0' width='125px' nowrap='nowrap'>"
                    + "                     <span id='spn0" + div.divCode + "' class='rgCollapse' onclick='Collapse(this)'>&nbsp&nbsp</span>"
                    + "                     Division: " + div.divCode
                    + "                 </td>"
                    + "                 <td class='col1' width='5%' style='padding-left:15px' nowrap='nowrap'>"
                    + "                     Description: "
                    + "                 </td>"
                    + "                 <td class='col2' width='40%' nowrap='nowrap'>"
                    + "                     <input class='grid' type='text' id='dvDesc" + div.divCode + "' value='" + div.divDesc + "' style='width: 400px' maxlength='60' />"
                    + "                 </td>"
                    + "                 <td class='col3' width='50%' align='right' nowrap='nowrap'>"
                    + "                     <input type='button' id='btnDv" + div.divCode + "' value='Add Business Unit' style='align:right' onclick='AddMfRow(this);' />"
                    + "                 </td>"
                    + "             </tr>"
                    + "         </table>"
                    + " </div>"
                    + "<div id='divWrapper" + div.divCode + "'>"

归功于作者: jQuery to find all previous elements that match an expression

另一个问题..这在IE中爆炸了!任何想法为什么??

$.fn.reverse = function () {
return this.pushStack(this.get().reverse(), arguments);

};

//创建两个新函数:prevALL和nextALL。 $ .each(['prev','next'],function(unusedIndex,name){     $ .fn [name +'ALL'] = function(matchExpr){         //获取正文中的所有元素,包括正文。         var $ all = $('body')。find('*')。andSelf();

    // slice the $all object according to which way we're looking 
    $all = (name == 'prev')
         ? $all.slice(0, $all.index(this)-10).reverse()
         : $all.slice($all.index(this) + 2)
    ;

    // filter the matches if specified 
    if (matchExpr) $all = $all.filter(matchExpr);
    return $all;
};

});

1 个答案:

答案 0 :(得分:0)

$("table").parent("#divOuter").prev("#divOuter").find("table"); //up one

$("table").parent("#divOuter").next("#divOuter").find("table"); //down one

如果你循环播放,我也会把你的ID更改为类,因为每页只允许1个唯一ID。