Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.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 如何找到某个元素在div中的位置?_Javascript_Jquery - Fatal编程技术网

Javascript 如何找到某个元素在div中的位置?

Javascript 如何找到某个元素在div中的位置?,javascript,jquery,Javascript,Jquery,我试图在我的div中找到图像的位置 我的Html <div> <p>test</p> <img src='test1.jpg'/> <p>test</p> <p>test</p> <img src='test2.jpg'/> <p>test</p> <img src='test2.jpg'/> --the use

我试图在我的div中找到图像的位置

我的Html

<div>
  <p>test</p>
  <img src='test1.jpg'/>  
  <p>test</p>
  <p>test</p>  
  <img src='test2.jpg'/>  
  <p>test</p>
  <img src='test2.jpg'/>  --the user clicks this image and I want to know the time it appears. In this case, 2 is what I need.
  <p>test</p>
  <img src='test2.jpg'/>
  <p>test</p>
</div>

我可以知道相同的图像出现了多少次,但我不能告诉用户单击了哪个图像以及它的位置。有办法做到这一点吗?非常感谢

$('img').click(function() {
    var clickedIndex = $('img[src="'+ $(this).attr('src') +'"]').index(this) + 1;
    console.log(clickedIndex);
});

在这里,我构建了一个与单击的图像具有相同源属性的图像属性搜索,然后调用传递单击的元素作为引用。正如
索引
所示,我们添加1

如果拥有相同的祖先
div
很重要,只需使用
最近的
查找
来调整它,就像最初一样:

var clickedIndex = 
     $(this).closest('div')
    .find('img[src="'+ $(this).attr('src') +'"]').index(this) + 1;


要获取对单击图像的引用,只需在处理程序中使用
this
关键字。您可以将其包装在jQuery对象
$(this)
中,然后对其调用jQuery方法


另外,通过你问题的代码注释,我假设
position
实际上是指元素的
索引,但是如果你想得到元素的文字位置,可以使用(相对于文档)和(相对于父级)方法

旁注:如果您需要计算同一来源的图像数量,您可以使用以下更简单的方法:

同样,上面假定在事件处理程序的作用域内,
引用图像元素。不过,您可以轻松地对其进行调整,以查询任何
src

在这里,我构建了一个与单击的图像具有相同源属性的图像属性搜索,然后调用传递单击的元素作为引用。正如
索引
所示,我们添加1

如果拥有相同的祖先
div
很重要,只需使用
最近的
查找
来调整它,就像最初一样:

var clickedIndex = 
     $(this).closest('div')
    .find('img[src="'+ $(this).attr('src') +'"]').index(this) + 1;


要获取对单击图像的引用,只需在处理程序中使用
this
关键字。您可以将其包装在jQuery对象
$(this)
中,然后对其调用jQuery方法


另外,通过你问题的代码注释,我假设
position
实际上是指元素的
索引,但是如果你想得到元素的文字位置,可以使用(相对于文档)和(相对于父级)方法

旁注:如果您需要计算同一来源的图像数量,您可以使用以下更简单的方法:

同样,上面假定在事件处理程序的作用域内,
引用图像元素。不过,您可以轻松地对其进行调整,以查询任何
src

您可以使用索引

   $('img').click(function(){

         index =  $(this).closest('div').find('img').index(this) + 1;

   });
您可以使用索引

   $('img').click(function(){

         index =  $(this).closest('div').find('img').index(this) + 1;

   });

你的意思是除了
this.offsetLeft
this.offsetTop
?如果有人单击div,你想要什么输出?img的src属性?你的意思是除了
this.offsetLeft
this.offsetTop
?那么如果有人点击div,你想要什么输出?img的src属性?第二个问题是什么?如果第二个问题的意思是获取对单击图像的引用,只需在处理程序内部使用
this
。我的意思是获取位置,在最后一句话的末尾询问。我自己也知道怎么做,只是想说清楚,但你的答案已经在这里了,而且是经过深思熟虑的,除了一件事。我认为建议这样做是明智的。“但是我不能告诉用户点击了哪个图像以及它的位置。”我认为OP的位置实际上是指
索引
,而不是
偏移量
/
位置
,请看他问题代码的注释。我现在看到代码注释,以前没有。我的坏+1不管怎样。第二个问题呢?如果第二个问题的意思是获取对单击图像的引用,只需在处理程序内部使用
this
。我的意思是获取位置,在最后一句话的末尾询问。我自己也知道怎么做,只是想说清楚,但你的答案已经在这里了,而且是经过深思熟虑的,除了一件事。我认为建议这样做是明智的。“但是我不能告诉用户点击了哪个图像以及它的位置。”我认为OP的位置实际上是指
索引
,而不是
偏移量
/
位置
,请看他问题代码的注释。我现在看到代码注释,以前没有。我的坏+不管怎样。