选择孙子onclick事件
我已经写了一些jQuery代码来选择另一个div的div的孙子,其ID为pageContainer2,用户单击它并显示带有索引值的警报消息。但代码是节点工作,所以请看看我是否写错了代码或是他们的任何其他问题。选择孙子onclick事件
以下是我的html页面的代码与jQuery脚本:
<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>
<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>
好,click
事件完全不绑定,因为textLayer
是class
没有id
,但你通过id
选择。
更改选择是:
$("div#pageContainer2 div.textLayer div")
这也不清楚你wan't该指数显示,因为你当前使用将在整个文档中返回特定div
标签的指数。如果你想在家长的索引,你最好使用类似的东西:
var el = $(this);
var index = $('div', el.parent()).index(this);
// Or
var index = el.prevAll().length;
有几个问题。
- 您似乎没有被使用
$(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);
});
});
参考文献:
不工作的代码也是 – hiteshtr 2012-04-16 12:02:32
是的,它的确如此。试试[JS小提琴演示](http://jsfiddle.net/davidThomas/dYz35/)。如果它不适用于您的网站,请查看浏览器错误控制台并查看发生了什么,或者是否报告了任何错误。 – 2012-04-16 12:05:42
+1''domReady';) – 2012-04-16 12:08:29
将您的代码$(document).ready
和hiteshtr这是工作,只要你想只检查这一项改变#textLayer
到.textLayer
。
$(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);
});
});
我看到你在这里做了什么... – 2012-04-16 12:09:03
Juicy它是我自己的代码.... – 2012-04-16 12:10:53
哪几个神奇地出现在你之前的几分钟? (在这种情况下,情侣约为8分钟) – 2012-04-16 12:12:35
我看到了所有三个答案的小提琴,并且您的代码正在返回完美的索引值,但是在我的页面上脚本没有通过点击事件激活,不知道为什么。有可能是由于存在另一个点击绑定函数,这个脚本没有运行?请回复我ASAP – hiteshtr 2012-04-17 05:15:44
虽然代码工作时,我把它放在一些Java脚本函数,并绑定该功能,单击事件列表 – hiteshtr 2012-04-17 06:08:38