1

在此处查看小提琴中的行为。

$(document).ready(function () {
            $('.tile').draggable();
            $('.tile').on('dragstart', function () {
                var numClones = $('.tile').length - 1
                if (numClones > 0) {
                    //why can't I use fadeOut or empty here?
                    //make sure we don't remove the clone before it's made
                    $('.tile')[numClones].remove();
                }
                console.log(numClones);
                var clone = $(this).clone();
                clone.appendTo('body');
            });
        });

这允许用户在拖动事件上创建页面元素的克隆。它还会删除以前的克隆。fadeOut在上面的注释行中,当我尝试使用从页面中删除 div时,为什么会出现错误?这是一个 jQuery 对象,对吧?我得到错误Object #<HTMLDivElement has no method fadeOut

4

2 回答 2

2

jQuery 元素的索引访问器(它是 的简写get(index))返回 DOM 元素。您正在寻找 jQuery 元素,在这种情况下您应该使用.eq(index)(这个没有简写)。

唯一remove()有效的原因是它也是一种 DOM 元素方法

$('.tile').eq(numClones).fadeOut(function () {
    // make sure the old clones get deleted, not just hidden
    $(this).remove();   
});

http://jsfiddle.net/2rnSk/1/

于 2013-10-25T20:16:00.097 回答
-1

尝试这个:

$($('.tile')[numClones]).fadeOut();

jQuery 对象伪装成与其选择器匹配的元素数组。当您应用索引时,您将返回一个HTMLDivElement. 但是如果你把它包装在一个 jQuery 对象中,你应该可以fadeOut毫无问题地应用它。

于 2013-10-25T20:10:11.620 回答