在下面的代码中你会如何使用.not(this)?

时间:2011-10-18 22:05:19

标签: jquery jquery-ui jquery-selectors properties optional-parameters

你怎么说:在这段代码的情况下不是(这个):

$(".draghandle").droppable({
    accept: ".draghandle:not(this)"
    drop: function ( event, ui ) {
        $( this )
        .addClass( "ui-state-highlight" )
        .find( "p" )
        .html( "Dropped!" );
    }
});

你会看到accept选项旁边的选择器可能无效,虽然我没有检查过,但我想知道你是否有解决方案来验证它?我还没有找到一个,但如果你有一个改变代码的另一部分的解决方案,不要气馁,我只需要修复。 以下是我正在尝试扩展的类似问题:jQuery: exclude $(this) from selector 这里是我正在使用的主要代码的链接:http://jqueryui.com/demos/droppable/#accepted-elements

1 个答案:

答案 0 :(得分:3)

说明

您可以将jQuery列表作为accept参数传递,而不仅仅是选择器。在以下演示中,我将所有.ui-widget-content个元素设为droppable ,而#draggable之外的其他元素。 (颠倒原来的jQuery UI网站演示)。我传递给accept的参数是$(".ui-widget-content").not("#draggable")


演示

http://jsfiddle.net/5TZ7b/
http://jsfiddle.net/5TZ7b/show


代码

$(function() {
    $( "#draggable, #draggable-nonvalid" ).draggable();
    $( "#droppable" ).droppable({
        accept: $(".ui-widget-content").not("#draggable"),
        activeClass: "ui-state-hover",
        hoverClass: "ui-state-active",
        drop: function( event, ui ) {
            $( this )
                .addClass( "ui-state-highlight" )
                .find( "p" )
                .html( "Dropped!" );
        }
    });
});

结论

您可以使用以下内容作为传递给accept的参数。

$(".draghandle").not(this)