我希望jquery遍历一些给定的div块,检查其中一个是否存在特定文本,如果返回true则执行某些操作。
这是我的HTML结构:
<div class="months">
<div class="month-button">Jan</div>
<div class="month-button">Feb</div>
<div class="month-button">Mar</div>
<div class="month-button">Apr</div>
<div class="month-button">May</div>
<div class="month-button">Jun</div>
<div class="month-button">Jul</div>
<div class="month-button">Aug</div>
<div class="month-button">Sep</div>
<div class="month-button">Oct</div>
<div class="month-button">Nov</div>
<div class="month-button">Dec</div>
</div>
这是我的JS:
$('div.month-button').on('click', function(){
$('div.months div.month-button').each(function(){
alert($('div.months div.month-button').text());
if($('div.months div.month-button').text() == 'Apr')
{
alert($('div.months div.month-button').text());
}
});
});
问题是,上面的代码只会返回一行,其中包含来自所有div块的文本。你可以在这里看到这个:http://jsfiddle.net/hmey6/ 什么是强制代码在循环时从一个div返回一个值的方法是什么?
答案 0 :(得分:1)
您需要将.click()
处理程序放在.each()
内,并使用$(this)
来定位当前的循环元素:
$('div.months div.month-button').each(function () {
$(this).on('click', function () {
alert($(this).text());
if ($(this).text() == 'Apr') {
alert($(this).text());
}
});
});
<强> Updated Fiddle 强>
如果您不需要处理.each()
内的任何其他任务,您可以直接使用:
$('div.months div.month-button').on('click', function () {
alert($(this).text());
if ($(this).text() == 'Apr') {
alert($(this).text());
}
});
<强> Updated Fiddle 强>