Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.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查找元素在元素数组中的位置_Javascript_Jquery - Fatal编程技术网

Javascript 使用jQuery查找元素在元素数组中的位置

Javascript 使用jQuery查找元素在元素数组中的位置,javascript,jquery,Javascript,Jquery,我有两个数组,表示排序前后列表的状态: var $before = $('li'); // SORTING var $after = $('li'); 现在我想选择一个特定的项var$item=$after.filter(“:first child”)并找到它在$before列表中的位置。到目前为止,我所做的工作是有效的: var beforeIndex = false; $.each($before, function(i, v) { if($(v)[0] == $item[0])

我有两个数组,表示排序前后列表的状态:

var $before = $('li');
// SORTING
var $after = $('li');
现在我想选择一个特定的项
var$item=$after.filter(“:first child”)
并找到它在$before列表中的位置。到目前为止,我所做的工作是有效的:

var beforeIndex = false;

$.each($before, function(i, v) {

  if($(v)[0] == $item[0]) {

    beforeIndex = i;

  }

})
但是,我觉得应该有一个更简单的解决方案,比如:

$before.find(x => $(x)[0] == $item[0]);

(这不起作用)。有什么想法吗?:)

您可以按以下方式解决此问题。我试着用一个最小的例子

var$li=$(“ul>li”);
var$item=$li.filter(':last child');
var result=Array.prototype.findIndex.call($li,(li)=>{
返回$item.is($(li));
});
控制台日志(结果)

  • 一,
  • 二,
  • 三,

您可以通过以下方式解决此问题。我试着用一个最小的例子

var$li=$(“ul>li”);
var$item=$li.filter(':last child');
var result=Array.prototype.findIndex.call($li,(li)=>{
返回$item.is($(li));
});
控制台日志(结果)

  • 一,
  • 二,
  • 三,

只要使用一个数据属性,就不需要查找它了

//在lis上循环并使用索引设置数据属性
$(“li”)。每个功能(索引){
$(此).data(“原始索引”,索引)
})
//更改顺序的随机排序代码
$((“ul”).append($(“li”).sort(函数(){
返回Math.random()>.5?1:-1
}))
//在新排序的lis上循环并读取文本和旧索引
$(“li”)。每个(功能){
var elem=$(本);
console.log(elem.text(),elem.data(“orginalIndex”))
})

  • 一,
  • 二,
  • 三,
  • 四,
  • 五,

只要使用一个数据属性,就不需要查找它了

//在lis上循环并使用索引设置数据属性
$(“li”)。每个功能(索引){
$(此).data(“原始索引”,索引)
})
//更改顺序的随机排序代码
$((“ul”).append($(“li”).sort(函数(){
返回Math.random()>.5?1:-1
}))
//在新排序的lis上循环并读取文本和旧索引
$(“li”)。每个(功能){
var elem=$(本);
console.log(elem.text(),elem.data(“orginalIndex”))
})

  • 一,
  • 二,
  • 三,
  • 四,
  • 五,

如果
$before
是jQuery对象(它是),请使用
$before.each()
而不是
$。each($before..)
$。each()
用于非jQuery对象。另外
$(x)[0]
是无意义的。为什么不在每个对象上设置一个数据属性呢?还有
$before.index($item)
可用于获取结果堆栈中元素的索引。@Taplar TIL。那是个好主意如果
$before
是jQuery对象(它是),请使用
$before.each()
而不是
$。each($before..)
$。each()
用于非jQuery对象。而且
$(x)[0]
是无点的。为什么不在每个对象上设置一个数据属性?还有
$before.index($item)
可用于获取结果堆栈中元素的索引。@Taplar TIL。那是个好主意