无法获得.show()来处理ajax的成功

时间:2011-02-10 16:13:46

标签: jquery

以下是我遇到问题的代码。问题是我在横穿DOM并尝试在.cell-toolbar上执行.show()的两个特定行[href $ =“#edit”]和.cell-toolbar a [href $ =“#delete” ]' 分别。如下所示,我试图在两个不同的地方执行.show,但都没有取得任何成功。下面代码中的console.log确实为选择器返回了相应的jQuery对象。另外值得注意的是我在jQuery 1.2上

$('.bstory-page-preview .cell').droppable({
    scope: 'cells',
    hoverClass: 'cellHover',
    drop: function(event, ui) {
        var container   = $(this);
        container.find('.cell-toolbar a[href$="#edit"]').show(); // Does not work
        container.find('.cell-toolbar a[href$="#delete"]').show(); // Does not work
        var toolbar     = container.find('.cell-toolbar').clone();
        container.html(toolbar);

        var nid = getNid($(ui.draggable));
        var did = getDid($(this));
        var region = $(this).attr('data-region');

        $.ajax({
            url: Drupal.settings.basePath + 'bstory/page/' + did + '/' + region + '/' + nid + '/save',
            dataType: 'json',
            success: function(data) {

                container.append(data.node);
                container.find('.cell-toolbar a[href$="#edit"]').show();  // Does not work
                container.find('.cell-toolbar a[href$="#delete"]').show(); // Does not work
                console.log(container.find('.cell-toolbar a[href$="#edit"]'));

            }
        });
    }
});

1 个答案:

答案 0 :(得分:0)

可能是您在DOM绘制元素之前尝试访问元素。尝试添加一点延迟:

                container.append(data.node);
                window.setTimeout(function() {
                   container.find('.cell-toolbar a[href$="#edit"]').show();  // Does not work
                   container.find('.cell-toolbar a[href$="#delete"]').show(); // Does not work
                   console.log(container.find('.cell-toolbar a[href$="#edit"]'));
          },50)