0

問題のコードは次のとおりです。

            $('a.delete').click(function(e) {

            e.preventDefault();
            var parent = $(this).parent();

            $.ajax({
                type: 'get',
                url: 'deletemenu.php',
                data: 'ajax=1&delete=' + parent.attr('id').replace('menu-',''),
                beforeSend: function() {
                parent.animate({'backgroundColor':'#fb6c6c'},300);
            },
                    success: function() {

                    parent.slideUp(300,function() {
                        parent.remove();
                    });

                    $('.menusub').slideUp(300,function() {
                        $('.menusub').remove();
                    });
                }
            });
        });

わかりました、私がやりたいのは、slideUp で、特定のメニューの下にあるすべてのサブメニューを削除することです (このメニューを削除するとき)。今私は持ってい$('.menusub').slideUp(300,function() { $('.menusub').remove(); });ます。これを達成するために。もちろん、このコードの問題は、すべてのサブメニュー (menusub クラスを持つ) が消えてしまうことです。特定のメニューの下にあるサブメニューのみが消えるようにするにはどうすればよいですか?

ちなみに、これはメニューの

            $result = mysql_query("SELECT * FROM Menu") or die(mysql_error());
        while($row = mysql_fetch_array($result)){
            echo '<div class="menu" id="menu-',$row['menu_id'],'">';
            echo $row['menu_name']. " - ". $row['menu_weight']. "<a class='delete' href='?delete=".$row['menu_id']."'> delete</a>";
            echo '</div>';

            $sub = mysql_query("SELECT * FROM SubMenu INNER JOIN Menu WHERE SubMenu.menu_id = Menu.menu_id AND Menu.Menu_id = ".$row['menu_id']."") or die(mysql_error());
            while($subrow = mysql_fetch_array($sub)){
                echo '<div class="menusub" id="menusub-',$subrow['submenu_id'],'">';
                echo "-- ".$subrow['submenu_name']." - ".$subrow['submenu_weight']."<a class='deletesub' href='?deletesub=".$subrow['submenu_id']."'> delete</a><br/>";
                echo '</div>';
            }
        }`

返信ありがとうございます!

4

1 に答える 1

0

これはあなたを助けるかもしれません:

変化 :

$('#menusub-').slideUp(300,function() {
    $('.menusub').remove();
});

に:

var rowid = parent.attr('id').split('-')[1];
$('#menusub-'+rowid).slideUp(300,function() {
    $(this).remove();
});

編集:rel提案、次のようなサブメニューに 属性を追加します:

rel="$row['menu_id']"

スクリプトを次のようにします。

$('a.delete').click(function(e) {

    e.preventDefault();
    var parent = $(this).parent();
    parent.slideUp(300,function() {
        parent.remove();
});

var id = parent.attr('id').split('-')[1];
$('div.submenu').each(function(index, element) {
    $this = $(this);
    if($this.attr('rel') == id) {
        $this.slideUp(300,function() {
            $this.remove();
        });
    }
    });

});
于 2013-04-02T18:13:20.790 に答える