Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.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 确定相关元素是高于还是低于_Javascript_Jquery_Html_Jquery Ui - Fatal编程技术网

Javascript 确定相关元素是高于还是低于

Javascript 确定相关元素是高于还是低于,javascript,jquery,html,jquery-ui,Javascript,Jquery,Html,Jquery Ui,我有一个包含多个元素的无序列表,我使用jquery sortable来移动项目-以下是我的标记: <ul> <li id=1>item 1</li> <li id=2>item 2</li> <li id=3>item 3</li> <li rel=2>insert</li> <li id=4>item 4</li> <

我有一个包含多个元素的无序列表,我使用jquery sortable来移动项目-以下是我的标记:

<ul>
    <li id=1>item 1</li>
    <li id=2>item 2</li>
    <li id=3>item 3</li>
    <li rel=2>insert</li>
    <li id=4>item 4</li>
</ul>
  • 第1项
  • 第2项
  • 第3项
  • 插入
  • 第4项
“插入”元素与ID为2的LI相关-我的问题: 确定相关项目是在“插入”元素之上还是之下的最佳实践是什么?(在本例中:如上所述)

您可以为此使用jquery的
nextAll
prevAll
函数。此处$(this)指的是
插入
元素。

您可以使用获取元素的位置,并将其与其他元素进行比较:

inserted=$('li[rel=2]');
$('ul li')。单击(函数(){
if(inserted.index()>$(this.index()){
log('Clicked元素位于上方');
}else if(inserted.index()<$(this.index()){
log('单击的元素在下面');
}
});

  • 第1项
  • 第2项
  • 第3项
  • 插入
  • 第4项

我猜你是说jquery ui可排序?Core jquery没有可排序项假设列表是垂直的,您可以比较元素索引(较低表示较高),或者您可以使用
offset().top
比较顺序位置。或者,您可以使用
nextAll()
prevAll()
,但它们涉及到在所有同级之间循环。基本上,jQuery的可排序特性有一个.toArray()方法,该方法将跟踪移动、插入和删除的项索引。
if($(this).prevAll("[id=2]").length > 0)
{
//element is above
}


if($(this).nextAll("[id=2]").length > 0)
{
//element is below
}