jQuery :has() Selector Examples
The jQuery has selector basically selects elements which contain at least one element that matches the specified selector. So this means that for any occurrence of a target within the source, the target is considered to be found. Confusing? Don’t worry. In this article, I am going to share easy examples that show you how to use the :has() selector in real time. And once you go through the examples, the concept of the :has() selector will be much more clear. Don’t forget to try the demo.
How to use the jQuery has Selector
Here is the basic syntax of the :has() selector in jQuery
$(":has(selector)")In order to see how it works, let’s assume that we have set of elements in a web page such as divs, paragraphs, span. Let’s now see the different examples:n
Common HTML source code for all the following examples:
<style type="text/css">
.bold {
font-weight: bold;
font-size: 120%;
}
.divs_container div {
padding: 10px;
margin: 10px;
}
.yellow {
background-color: #FFFF99;
border: 1px solid #FF0;
}
.purple {
background-color: #9999FF;
border: 1px solid #90F;
}
.green {
background-color: #D7FFD7;
border: 1px solid #090;
}
.blue {
background-color: #E1F3FF;
border: 1px solid #09F;
}
.red_text {
color: #D70000;
font-weight: bold;
}
.orange {
border: 10px solid #F90;
color: #FFF;
font-size: 200%;
font-weight:bold;
font-family: Georgia, "Times New Roman", Times, serif;
font-style: italic;
}
</style>
<div class="divs_container">
<div id="my_div1" class="purple">This is MY DIV 1</div>
<div id="my_div2" class="blue">This is MY DIV 2
<div class="yellow">This is a child DIV</div>
</div>
<div id="my_div3" class="red_text">This is MY DIV 3
<p>This is para</p>
</div>
<p id="my_para" class="blue red_text">This is a container para <span class="bold">with some text</span></p>
<p>
<label for="first_name">First Name</label>
<input type="text" name="first_name" id="first_name">
</p>
<p>
<label for="message">Message<br>
</label>
<textarea name="message" id="message" cols="45" rows="5" class="green">Default Text.</textarea>
</p>
</div>
<p>
<input type="submit" name="sbt_check_div_has_class" id="sbt_check_div_has_class" value="Check if MY DIV 1 has GREEN class">
<input type="submit" name="sbt_div_has_div" id="sbt_div_has_div" value="Check if MY DIV 2 has a DIV in it and alert">
<input type="submit" name="sbt_check_div_has_para" id="sbt_check_div_has_para" value="Check if MY DIV 3 has para and add GREEN class">
<input type="submit" name="sbt_check_para_has_span" id="sbt_check_para_has_span" value="Check if PARA has SPAN and REMOVE RED_TEXT class">
<input type="submit" name="sbt_check_textbox_has_attribute" id="sbt_check_textbox_has_attribute" value="Check if Textbox has CLASS Attribute and alert">
<input type="submit" name="sbt_check_textarea_has_attribute" id="sbt_check_textarea_has_attribute" value="Check if Textarea has CLASS Attribute and to value">
</p>
<script type="text/javascript" language="javascript">
$(document).ready(function(){
//Add jQuery code here
});
</script>Example 1: Check if MY DIV 1 has “green” class and show alert when a button is clicked
$('#sbt_check_div_has_class').on("click", function(e){
if( $("#my_div1").hasClass("green") )
{
alert('MY DIV 1 has GREEN class');
}
else
{
alert('MY DIV 1 does NOT have GREEN class');
}
e.preventDefault();
});Example 2: Check if MY DIV 2 has a DIV inside it and show alert when a button is clicked
$('#sbt_div_has_div').on("click", function(e){
if( $("#my_div2:has(div)") )
{
alert('MY DIV 2 has a DIV in it.');
}
else
{
alert('MY DIV 2 DOES NOT have a DIV in it.');
}
e.preventDefault();
});Example 3: Check if MY DIV 3 has a PARAGRAPH inside it and if yes, add a class to MY DIV 3 when a button is clicked
$('#sbt_check_div_has_para').on("click", function(e){
$("#my_div3:has(p)").addClass('green');
e.preventDefault();
});Example 4: Check if MY PARA has a SPAN inside it and if yes, remove the “red_text” class from para when a button is clicked
$('#sbt_check_para_has_span').on("click", function(e){
$("#my_para:has(span)").removeClass('red_text');
e.preventDefault();
});Example 5: Check if TEXTBOX has “class” attribute show alert when a button is clicked
$('#sbt_check_textbox_has_attribute').on("click", function(e){
if($("#first_name[class]").length)
{
alert('Textbox HAS Class attribute.');
}
else
{
alert('Textbox does NOT have the Class attribute.');
}
e.preventDefault();
});Example 6: Check if TEXTAREA has “class” attribute, add new value to default value when a button is clicked
$('#sbt_check_textarea_has_attribute').on("click", function(e){
if($("#message[class]").length)
{
$("#message").val( $("#message").val() + ' This is new text appended to the Textarea Dynamically!' );
}
e.preventDefault();
});Example 7: Check if DIV has children and show alert when a button is clicked
$('#sbt_check_div_children').on("click", function(e){
if( $("#my_div4").children().length )
{
alert('MY DIV 4 HAS Children.');
}
else
{
alert('MY DIV 4 DOES NOT HAVE Children.');
}
e.preventDefault();
});That’s it!
Do you know of any other ways to use the jQuery :has() selector? Feel free to suggest by commenting below.