Question

I'm having issues getting a jquery .change() event to fire in an Iphone. Code is similar to the following:

var checkboxes = $('#someelement').find('input[type=checkbox]');

checkboxes.change(function() {

//never gets here on iPhone
alert('hello');
});

checkboxes.filter(':checked').trigger('change'); 

The list of checkboxes is generated dynamically before this step, written to the page with an .append() method.

This all works fine in desktop browsers and Android phones. Using JQuery version 1.6.4

Any thoughts?

Was it helpful?

Solution

Try using delegate, which lets you attach events to current and future elements.

$("#someelement").delegate('input[type="checkbox"]', "change", function(){
  alert('hello');
});

Also, as of jQuery 1.5, all attribute selectors need to be quoted (ex. the "checkbox" in the second selector).

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top