<div>'.$i.'</div>
$ i由循环自动生成 - 这可能导致:
<div>'.$i.'</div>
<div>'.$i.'</div>
<div>'.$i.'</div>
等。每个$ i的不同之处。
当点击div时,如何获得特定$ i的值(使用jQuery)。
在标准JS中我会使用onClick($ i)。 在jQuery中我只是不知道,如何选择那个val。
答案 0 :(得分:17)
如果您没有任何其他方法来识别<div>
元素,则会在页面上的每个 <div>
上放置一个处理程序。
$('div').click(function() {
var text = $(this).text();
// do something with the text
});
.text()
方法将返回<div>
的文本内容(以及任何嵌套元素)。
如果您只想要某些click
元素上的<div>
事件,最好添加一个类,然后根据该类选择正确的类。
$('div.myClass').click(function() {
var text = $(this).text();
// do something with the text
});
HTML
<div class="myClass">'.$i.'</div>
<div class="myClass">'.$i.'</div>
<div class="myClass">'.$i.'</div>
<div>some other div</div>
如果<div>
元素都在同一个祖先元素中,您可以使用.delegate()
代替,这将在祖先上放置一个处理程序来处理内部的所有div。
$('#parentID').delegate('div.myClass', 'click', function() {
var text = $(this).text();
// do something with the text
});
HTML
<div id="parentID">
<div class="myClass">'.$i.'</div>
<div class="myClass">'.$i.'</div>
<div class="myClass">'.$i.'</div>
</div>
(需要jQuery 1.4或更高版本)
答案 1 :(得分:5)
$('div').click(function(event){
alert($(this).text());
});
一个更有效的解决方案(因为看起来你有很多<div>
s会将一个直播事件添加到那些包装元素中,如下所示:
$('#container').live('click', function(event){
if(event.target.tagName == "DIV") alert($(event.target).text());
});