在ajax请求后我的函数调用它无法正常工作,只需在页面刷新后工作

时间:2014-09-01 01:31:17

标签: javascript jquery ajax

我有一张图片列表。每个图像都有一个删除它的链接:

echo '<a class="delete j_bannerdelete" id="'.$result_banner['id'].'" href="#">Delete</a> ';

我正在使用jQuery Ajax删除此图像。

但是当我只有一张图片时,我想隐藏这个“删除”链接。

所以在我的js文件中,我$(function(){});中的第一件事就是:

hidelink(1); //my function to hide if I have only 1 image

它工作正常,当我访问我的页面如果我只有一个图像,我的“删除”链接不会出现。

但是当我有我的最后两张图片并且我点击删除一张图片时,当我点击删除时,我想隐藏我的“删除”链接,并且它不起作用,只是在我刷新页面时才有效。 / p>

你知道为什么会这样吗?

我删除图片的代码是:

$(function(){
    var banid = null;
    $("a#nao").click(function(event){
        event.preventDefault();
        $('.confirm').fadeOut("slow",function(){
            $('.delete_dialog').fadeOut("slow"); 
        });
        $('.bannerli li[id="'+ banid +'"]').css('background','#f5f5f5');
        banid = null;
    });
    $("a#delete").click(function(event){
        event.preventDefault();
        if (!banid) return;
        $.post(url,{action:'delete',id: banid},function(){
            window.setTimeout(function(){
                $('.bannerli li[id="'+ banid +'"]').fadeOut("slow");
            },500);
            $('.confirm').fadeOut("fast",function(){
                $('.delete_dialog').fadeOut("fast"); 
            });
            hidelink(2); //here I call my function every time I delete

        });

    });
    $('.bannerli').on('click','.j_bannerdelete',function(){
        banid = $(this).attr('id');
        $('.bannerli li[id="'+ banid +'"]').css('background','red');
        $('.delete_dialog p').text('You really want to remove this image?');
        $('.delete_dialog').fadeIn("slow",function(){
            $('.confirm').fadeIn("slow");
        });
        return false;
    })
});

这是隐藏“删除”链接功能:

function hidelink($value) {
    if($('.bannerli li').length <= $value) {
        $('.j_bannerdelete').hide();
    }
}

1 个答案:

答案 0 :(得分:0)

我认为如果长度为.foreach("selectorname"),则必须使用0来查找匹配元素,然后使用.("selectorname").hide()隐藏删除链接或更好地添加隐藏链接的css类(所以如果再次出现图像,您只需删除此css类以再次显示链接)。 附:如果您要在$post调用中添加用于处理错误的代码,那么这很好:

self.remove = function (item) {
    $.ajax({ type: "DELETE", url: '/api/sets/' + item.ID })
        .done(function () {
            alert("Товар успешно удален!");
        })
     .fail(function (xhr, status, error) {
         var err = eval("(" + xhr.responseText + ")");
         alert(err.Message);
     });
}