我正在尝试获取特别点击的div的内部html内容,我有许多div元素。
查看我在下面使用的代码。
$(function() {
$( "#try" ).click(function() {
var clickedValue = $(this).find('div').text();
alert(clickedValue);
});
});
<div id="try">
<div class="cchoice" style="background-color: blue;">B</div>
<div class="cchoice" style="background-color: red;">R</div>
<div class="cchoice" style="background-color: yellow;">Y</div>
<div class="cchoice" style="background-color: black;">B</div>
<div class="cchoice" style="background-color: gray;">G</div>
<div class="cchoice" style="background-color: white;">W</div>
</div>
我想以这样的方式做到这一点,当点击背景颜色为蓝色的div时,B会出现,但似乎我正在做的事情出现问题。由于某些原因,我不能将id属性赋予那些div组,并且它们必须具有相同的类。
上面代码的问题是当我点击6个div元素中的任何一个时,clickedvalue将是BRYBGW。
答案 0 :(得分:4)
$(this).find('div')
将返回div
元素中的所有#try
元素,而不是仅定位所点击的div
您可以使用event.target
$(function() {
$("#try").click(function(e) {
var clickedValue = $(e.target).text();
alert(clickedValue);
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="try">
<div class="cchoice" style="background-color: blue;">B</div>
<div class="cchoice" style="background-color: red;">R</div>
<div class="cchoice" style="background-color: yellow;">Y</div>
<div class="cchoice" style="background-color: black;">B</div>
<div class="cchoice" style="background-color: gray;">G</div>
<div class="cchoice" style="background-color: white;">W</div>
</div>
但我建议使用点击处理程序来定位实际的子元素....通过直接将处理程序绑定到它们或使用事件委托
$(function() {
//or $("#try > div").click(function(e) {
$("#try").on('click', 'div', function(e) {
var clickedValue = $(this).html();
alert(clickedValue);
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="try">
<div class="cchoice" style="background-color: blue;">B</div>
<div class="cchoice" style="background-color: red;">R</div>
<div class="cchoice" style="background-color: yellow;">Y</div>
<div class="cchoice" style="background-color: black;">B</div>
<div class="cchoice" style="background-color: gray;">G</div>
<div class="cchoice" style="background-color: white;">W</div>
</div>