0

我想再次检查索引值。但对我来说,我的代码只能成功一次

$(function() {
    $('.tree').on("click", 'a',function(e) {
        var top = $(this).closest('tr').index()
        var cont = $(this).closest('tr').html()
      //  alert(cont)
        if ( top === 1) {
            alert('it is top')
            return false
            top = $(this).index()
        } else {
            $(this).closest('tr').empty()
            $('.second').before('<tr class="tree">'+ cont + '</tr>')
            top = $(this).index()
        }
    })
})

我把代码放在 jsfiddle 上:http: //jsfiddle.net/Jackyhua/gjypb/ 也许我需要“for”才能让它工作。

4

2 回答 2

0
$(function() {
    $('.tree').on("click", 'a',function(e) {
        var top = $(this).closest('tr').index()
        var cont = $(this).closest('tr').html()
      //  alert(cont)
        if ( top === 1) {
            alert('it is top')
            top = $(this).index()
            return false // you were returning before the index() stmt
        } else {
            $(this).closest('tr').empty()
            $('.second').before('<tr class="tree">'+ cont + '</tr>')
            top = $(this).index()
        }
    })
})

但你可能需要的是

$(function() {
    $('table').on("click", 'a',function(e) {
        var tr = $(this).closest('tr'), table = tr.closest('table');
        tr.insertBefore(table.find('tr').eq(1));
        return false;
    })
})

演示:小提琴

于 2013-07-30T05:54:53.083 回答
0

用这个:

小提琴

$(function() {
        $('table').on("click", '.tree a',function(e) {
            var top = $(this).closest('tr').index()
            var cont = $(this).closest('tr').html()
          //  alert(cont)
            console.log(top);
            if ( top === 1) {
                alert('it is top')
                return false
            } else {
                $(this).closest('tr').empty()
                $('.second').before('<tr class="tree">'+ cont + '</tr>')
            }
        })
})

问题是您tr在 dom 之后删除和添加。通过使用未更改的元素,您可以(使用.on().tree再次定位。

于 2013-07-30T06:03:19.480 回答