Reputation: 1253
I am a jquery
beginner. I made a table below in html:
What I wanted to do was - show three alert boxes back to back for 3 checkboxes being found in my table so I did this:
$(document).ready(function(){
$("#but").click(function(){
$(".tabclass td").each(function(i){
if($(this).find("input[type='checkbox']")){
alert("found");
}
});
});
});
But instead I got 9 alert boxes. How can I navigate to td
s which contains checkboxes only.
HTML CODE:
<table border="1" class="tabclass">
<tr>
<th>select</th>
<th>Name</th>
<th>Address</th>
</tr>
<tr>
<td><input type="checkbox" name="selectCheck" class="select" id="ch1" value="1"/> </td>
<td>Nitin</td>
<td><select>
<option>Gurgaon</option>
<option>Noida</option>
<option>Rohini</option>
</select>
</td>
</tr>
<tr>
<td><input type="checkbox" name="selectCheck" class="select" id="ch2" value="2"/> </td>
<td>Abc</td>
<td><select>
<option>Gurgaon</option>
<option>Noida</option>
<option>Rohini</option>
</select>
</td>
</tr>
<tr>
<td><input type="checkbox" name="selectCheck" class="select" id="ch3" value="3"/> </td>
<td>Xyz</td>
<td><select>
<option>Gurgaon</option>
<option>Noida</option>
<option>Rohini</option>
</select>
</td>
</tr>
</table>
<br><br>
<button id="but">Test</button>
Upvotes: 0
Views: 36
Reputation: 32354
Use length to test if element is present, right now you are testing if(object)
which returns always true
if($(this).find("input[type='checkbox']").length){
alert("found");
}
$(document).ready(function() {
$("#but").click(function() {
$(".tabclass td").each(function(i) {
if ($(this).find("input[type='checkbox']").length) {
alert("found");
}
});
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table border="1" class="tabclass">
<th>select</th>
<th>Name</th>
<th>Address</th>
<tr>
<td class='check_cell'>
<input type="checkbox" name="selectCheck" class="select" id="ch1" value="1" />
</td>
<td>Nitin</td>
<td>
<select>
<option>Gurgaon</option>
<option>Noida</option>
<option>Rohini</option>
</select>
</td>
</tr>
<tr>
<td class='check_cell'>
<input type="checkbox" name="selectCheck" class="select" id="ch2" value="2" />
</td>
<td>Abc</td>
<td>
<select>
<option>Gurgaon</option>
<option>Noida</option>
<option>Rohini</option>
</select>
</td>
</tr>
<tr>
<td class='check_cell'>
<input type="checkbox" name="selectCheck" class="select" id="ch3" value="3" />
</td>
<td>Xyz</td>
<td>
<select>
<option>Gurgaon</option>
<option>Noida</option>
<option>Rohini</option>
</select>
</td>
</tr>
</table>
<br>
<br>
<button id="but">Test</button>
or try the is()
function
if($(this).find('input').is("input[type='checkbox']")){
alert("found");
}
Upvotes: 4
Reputation: 576
Change your script to :
$(document).ready(function(){
$("#but").click(function(){
$(".select").each(function(i){
if($(this).find("input[type='checkbox']")){
alert("found");
}
});
});
});
There are 3 td in each tabclass so you get alert 3*3=9 times as you have used each function. so change your selector to your class
just change
tabclass td
to
select
Upvotes: 1