返回错误索引值的函数
function returning wrong index value
你好在我的网页中 DOM 元素的某些部分是动态生成的我在 jquery 中创建了一个函数来获取鼠标关闭事件时 DOM 元素的索引值。但是我的函数总是返回 7。这是我的 DOM 结构和函数代码:
<div id = "viewer">
<div id="pageContainer1" >
<canvas id="page2" width="741" height="959"></canvas>
<div class="textLayer">
<div>......some text here....</div>
<div>......some text here....</div>
<div>......some text here....</div>
</div>
</div>
<div id="pageContainer2" >
<canvas id="page2" width="741" height="959"></canvas>
<div class="textLayer">
<div>......some text here....</div>
<div>......some text here....</div>
<div>......some text here....</div>
</div>
</div>
<div id="pageContainer3" >
<canvas id="page3" width="741" height="959"></canvas>
<div class="textLayer">
<div>......some text here....</div>
<div>......some text here....</div>
<div>......some text here....</div>
</div>
</div>
</div>
<script>
var indexInital, pageStr, containerStr, selector;
//function for highlighting
$(function() {
$(window).scroll(function(){
pageStr = String(PDFView.page);
containerStr = "'"#pageContainer".concat(pageStr);
selector = containerStr.concat(" > .textLayer > div'"");
});
});
$(function() {
$('#viewer').on('mousedown', selector ,function () {
indexInitial = $(this).index();
console.log(indexInitial); });
});
</script>
在上面的代码中,只有带有 id 查看器的div 是静态的,其中的div 是动态生成的
我猜你真的想找到this
的索引,关于<div>
的.textLayer
。所以鉴于此:
<div class="textLayer">
<div>......some text here....</div>
<div>Pancakes</div>
<div>......some text here....</div>
</div>
如果你点击<div>Pancakes</div>
你会想要得到一个。如果这是正确的,那么你想要像这样绑定你的处理程序:
$('#viewer').on('mousedown', '.textLayer div', function() { /* ... */ });
你可以完全扔掉你的selector
变量。然后,在处理程序中,您可以执行以下操作:
$(this).siblings().add(this).index(this);
要获取 this
的本地索引,或者您可以执行以下操作:
$(this).closest('.textLayer').find('div').index(this);
演示:http://jsfiddle.net/ambiguous/U97DG/
siblings
函数在侧面寻找与this
深度相同的元素,然后我们使用add
将this
放入集合中;这给了我们this
及其同级元素在一组元素中,因此我们可以index(this)
找出this
在该集合中的位置。
另一种方法是使用 closest
将 DOM 返回到最近的<div class="textLayer">
,然后使用 find
抓取其中的所有<div>
;对于您的 HTML 结构,这为我们提供了siblings
和add
执行的元素集,因此我们可以再次使用index(this)
来找出this
的位置。
当您添加和删除<div class="textLayer">
元素或其内部的<div>
时,这两种方法都将继续有效。
相关文章:
- 测试索引值是否等于某个数字的倍数
- 从var向代码隐藏函数传递值
- 根据是否解析了 Promise 从函数返回值
- 使用函数索引到数组中
- 从Ajax函数返回值
- 如何从嵌套的API函数返回值
- 将ECMAScript 6析构函数赋值(ES2015)重构为旧版本的javascript
- JS/CSS:如何在向下滚动超过1200像素(高度)后更改z索引值
- 从异步函数返回值
- 我如何才能继续'如果'语句来比较作为参数的多个函数返回值
- 从节点中的回调函数返回值
- 触发具有较低Z索引值的DOM元素的事件
- NodeJS:创建一个hash并返回一个函数的值
- 如何通过回调函数设置值
- 提交时不采用函数返回值.并且没有按预期行事
- 返回错误索引值的函数
- 调用具有特定索引值 NodeList 的函数
- 在angular js的append函数中传递索引值
- 这个函数是如何获得索引值的
- 如何将 JavaScript onclick 函数与数组索引值一起使用