user3089840 user3089840 - 6 months ago 28
jQuery Question

W3C Schools example not working?

I'm trying to figure out this example by W3C Schools, but as far as I can tell, it's not working. Could someone steer me clear if I'm missing something?

<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("#div1").on("click", function(){
$(this).css("background-color", "pink");
});
$("#div2").live("click", function(){
$(this).css("background-color", "pink");
});
});
</script>
</head>
<body>

<h4 style="color:green;">This example demonstrates how to achieve the same effect using on() and live().</h4>

<div id="div1" style="border:1px solid black;">This is some text.
<p>Click to set background color using the <b>on() method</b>.</p>
</div><br>

<div id="div2" style="border:1px solid black;">This is some text.
<p>Click to set background color using the <b>live() method</b>.</p>
</div>

</body>
</html>


Fiddle: https://jsfiddle.net/gratiafide/dwmwm43a/

Source: http://www.w3schools.com/jquery/tryit.asp?filename=tryjquery_event_on_live

Answer

It is because jQuery.fn.live(..); has been deprecated in version 1.7 and completely removed in version 1.9.

You are using jQuery 1.12.2, the method jQuery.fn.live(...); does not exist in this version of jQuery.

To get jQuery.fn.live(...); to work you must change the script element to this:

<script type="text/javascript" src="https://code.jquery.com/jquery-1.7.min.js"></script>

If you would like to use the newest version of jQuery use this instead:

<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="https://code.jquery.com/jquery-1.12.2.min.js"></script>
<script>
  $(document).ready(function() {
    $("#div1").on("click", function() {
      $(this).css("background-color", "pink");
    });
  });
</script>
</head>
<body>
  <div id="div1" style="border:1px solid black;">
    Hello World!
    <p>Click me to make me pink!</p>
  </div>
</body>
</html>