以下是我遇到问题的代码。问题是我在横穿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"]'));
}
});
}
});
答案 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)