[英]div in grandchild don't handle onClick event by handler passed as props
[英]selecting grandchild onclick event
我编写了一些jquery代码来选择div,该div是ID为pageContainer2的另一个div的孙子,用户单击了该id并显示带有索引值的警报消息。 但是代码根本无法正常工作,因此请查看我是否在编写代码错误或它们是否有其他问题。
以下是我的带有jquery脚本的html页面代码:
<script>
$("div#pageContainer2 div.textLayer div").click(function () {
// this is the dom element clicked
var index = $("div").index(this);
alert("index of div is = " + index);
});
</script>
<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>
有几个问题。
$(document).ready()
事件,因此该事件未绑定任何元素,因为它们尚未在DOM中。 id="textLayer"
的div
(您有class="textLayer"
。 index()
方法,该选择器应定义要在其中查找该特定对象位置的元素。 this
元素只有一个 (即使是jQuery的each()
方法,从头到尾一次也只能使用一个元素)。 因此,删除该特定选择器。 因此,更正了以下代码:
$(document).ready(
function(){
$("div#pageContainer2 div.textLayer div").click(function () {
// this is the dom element clicked
var index = $("div").index();
alert("index of div is = " + index);
});
});
参考文献:
嗯, click
事件根本不会绑定,因为textLayer
是一个不是id
的class
,而是您通过id
选择的。
将选择器更改为:
$("div#pageContainer2 div.textLayer div")
还不清楚您不希望显示哪个索引,因为当前使用的索引将返回整个文档中特定div
标签的索引。 如果您想在父级中建立索引,最好使用类似以下的方法:
var el = $(this);
var index = $('div', el.parent()).index(this);
// Or
var index = el.prevAll().length;
将您的代码放在$(document).ready
,并将#textLayer
更改为.textLayer
hiteshtr,它可以正常工作,只需检查一下即可。
$(document).ready(function () {
$("#pageContainer2 > .textLayer > div").click(function () {
// this is the dom element clicked
var index = $("#pageContainer2 > .textLayer > div").index(this);
alert("index of div is = " + index);
});
});
<script type="text/javascript">
$(function() {
$(".textLayer > div", "#pageContainer2").click(function () {
var index = $(this).index();
alert("index of div is = " + index);
});
});
</script>
<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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.