• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 602
  • Last Modified:

How can jQuery select what was clicked on in a div?

This is a follow up to:

http://www.experts-exchange.com/Programming/Languages/Scripting/JavaScript/Jquery/Q_28393799.html
      
The code works, but I have two elements (checkboxes) in the div. I have used the class / container function so I only have to write one function to manage these, but each of the checkboxes carries with them a data attribute that is requried for an ajax call. $(this) no longer refers to the checkbox clicked, but rather the div. How do I refer to the checkbox that was clicked (specifically) so I can extract that id from the data attribute?

The HTML:
<div class="playerMods"><input type="checkbox" id="autoplayStatus"> Autoplay <input type="checkbox" id="enableControls">  Enable Controls</div>

Open in new window


The jQuery Code (Note: I am aware the _this isn't working... that was the impetus for this question).

$(document).on('click','.playerMods',function(){
                console.log($(this));
                var _this = $(this);
                var a=0;
                var c=0;
                if($("#autoplayStatus").is(':checked'))
                {
                    a=1;
                } else {
                    a=0;
                }
                if($("#enableControls").is(':checked'))
                {
                    c=1;
                } else {
                    c=0;
                }
                $.ajax({
                    url:"getHTML5Code.php?id="+_this.data('id')+"&a="+a+"&c="+c
                }).done(function(data){
                    $("#TheCode").html(data)
                })

Open in new window

0
DrDamnit
Asked:
DrDamnit
1 Solution
 
mankowitzCommented:
If you want the selector to pick the input boxes, change the selector to

$(document).on('click', '.playerMods input', function () {

see http://jsfiddle.net/66LbJ/

HTML:
<div class="playerMods">
    <input type="checkbox" id="autoplayStatus" data-stuff="autoplaybutton">Autoplay
    <input type="checkbox" id="enableControls" data-stuff="enablebutton">Enable Controls</div>

Open in new window


JS
$(document).on('click', '.playerMods input', function () {
    console.log($(this));
    var _this = $(this);
    var a = 0;
    var c = 0;
    if ($("#autoplayStatus").is(':checked')) {
        a = 1;
    } else {
        a = 0;
    }
    if ($("#enableControls").is(':checked')) {
        c = 1;
    } else {
        c = 0;
    }
    console.log(a, c, $(this).data("stuff"));
});

Open in new window

0
 
XGISCommented:
Hello Michael;
An alternate and simpler solution may be done without JQuery if that is preferred.
Divs and IDs

To add a message using some jquery this example does the same things;
Display Message on Click

It references the css class and its "a" content.  The same approach should be fine for checkboxes.   Ignore the rest of the CSS and DIV complexity in the 2nd sample.
0
 
DrDamnitAuthor Commented:
And if I only wanted to select checkboxes in that class / div area?

$(document).on('click','.playerMods input:checkbox',function(){

Open in new window


Doesn't appear to work...
0
 
Chris StanyonCommented:
Nothing wrong with your code. See it working here...

http://jsfiddle.net/ChrisStanyon/thuv9/
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Ultimate Tool Kit for Technology Solution Provider

Broken down into practical pointers and step-by-step instructions, the IT Service Excellence Tool Kit delivers expert advice for technology solution providers. Get your free copy now.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now