Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery:closest()CSS选择器_Javascript_Jquery_Css_Jquery Ui_Jquery Ui Draggable - Fatal编程技术网

Javascript jQuery:closest()CSS选择器

Javascript jQuery:closest()CSS选择器,javascript,jquery,css,jquery-ui,jquery-ui-draggable,Javascript,Jquery,Css,Jquery Ui,Jquery Ui Draggable,需要一个与函数$.fn.closest()等效的选择器,例如 $('.wrapper:eq(0)>h1>strong:closest(.wrapper)') 实现应该返回.wrapper元素,它是页面上的第一个元素,包含h1,因此包含strong元素 实际上,上面的一个例子只是一个例子。在现实世界中,我需要$.fn.draggable来设置动态包含属性 使现代化 为了让事情更清楚:页面上有(例如)树包装div.wrapper,一个接一个。每个包装器作为可排序区域连接到同级包装器。

需要一个与函数
$.fn.closest()
等效的选择器,例如

$('.wrapper:eq(0)>h1>strong:closest(.wrapper)')
实现应该返回
.wrapper
元素,它是页面上的第一个元素,包含
h1
,因此包含
strong
元素

实际上,上面的一个例子只是一个例子。在现实世界中,我需要
$.fn.draggable
来设置动态
包含属性


使现代化 为了让事情更清楚:页面上有(例如)树包装
div.wrapper
,一个接一个。每个包装器作为可排序区域连接到同级包装器。可排序的项目是
div.sub-wrapper
,并且放置在其中一个包装上,因此可以将它们移动到其他包装上。每个可排序项都有一个子元素
div
,它是可拖动的元素。我实际上需要的是将后者的
draggable.options.containment
设置为后者(draggable)元素当前所在的父包装。主要的问题是,如果我将像

{containment: $('div.draggable').closest('div.wrapper')}

然后,如果我将
div.sub-wrapper
移动到另一个
div.wrapper
,它将无法正常工作-包含元素保持不变-一个旧的
div.wrapper
拖动表以前位于。

我想您要使用它


根据您的更新,我怀疑您需要单独初始化DragTables,而不是作为一组:

$("selector-for-your-draggables").each(function() {
    var $this = $(this);
    $this.draggable({
        // ...other options here...
        containment: $this.closest(".wrapper") // or .sub-wrapper, I couldn't
                                               // tell from the description
    });
});

您已经讨论过它在“此刻”中的父元素。我不明白您的意思,但是如果您希望包含的可拖动元素发生更改,则需要一个
“选项”
当发生这种情况时,调用update
containment

CSS选择器没有选择祖先的权限。恐怕这还不清楚。您真的需要一个CSS选择器,还是只需要一个可以找到元素的jQuery调用(这意味着您可以在其中使用jQuery ISM和/或后续调用来缩小结果集)?你需要你在以“实施应该…”开头的一段中所说的,还是你在最后一段中所需要的,这似乎不是一回事?分别:你做了什么来解决这个问题?你的研究结果是什么?你从中发现了什么有用/没用?A真的很有用。描述代码/标记总是比显示实际显示问题的代码/标记的MCVE要清晰得多。不幸的是,这不是我要搜索的。Thx为链接到文件,我知道该功能是如何工作的。不知道你的意思,它不做你想要的。。。。也许html与需要匹配的内容会有所帮助。因此,如果你有两个包装,你需要把里面的一个有。。。。或者接受这样一个事实:它需要在两次通话中完成,而不是每件事都需要一行。我更新了这个问题,让事情变得更清楚。该解决方案对我没有帮助,因为
.wrapper
元素是动态更改的。那么,我拥有的是一个可拖动的DOM元素。它的指针在一个变量中。我需要告诉
jQuery.fn.draggable
库将
containment
属性(这是一个HtmleElement类型)设置为其自身当前最接近的
.wrapper
。我所设想的最简单的解决方案是使用选择器
:closest(.wrapper)
,但这是不可能的,因为
:closest()
选择器不存在,所以我需要以某种方式实现它。
$("selector-for-your-draggables").each(function() {
    var $this = $(this);
    $this.draggable({
        // ...other options here...
        containment: $this.closest(".wrapper") // or .sub-wrapper, I couldn't
                                               // tell from the description
    });
});