>if( $target.is('tr.rowData:text, tr.rowData textarea') ) $().is() doesn't support complex selectors (at least for now).
Cheers -- Ariel Flesler http://flesler.blogspot.com/ On 17 mayo, 16:30, "Michael Geary" <[EMAIL PROTECTED]> wrote: > The idea with setTimeout is not to wait until the page loads - you don't > have to guess at a specific timeout value - but to simply break up a long > script into pieces that don't have to all run at once. The typical > setTimeout interval for this purpose is 1 millisecond, i.e. the shortest > possible timeout. > > IOW, if a script has to do a thousand things, have it do a hundred of them, > then a short timeout, then another hundred, another timeout, etc. > > However, for what you're trying to do here, that doesn't sound like the > right way to fix it. I would use event delegation instead. Simply set a > *single* .click and .blur handler on the document body or on some element > that contains your table code, and inside the handlers, check to see if the > element that was clicked or blurred is one you're interested in. > > A direct translation of your code would look something like this: > > $(function() { > $('body') > .click( function( event ) { > var $target = $(event.target); > if( $target.is('.updateBtn') ) { > varrowId = $target.parents('tr').attr('id'); > saveRow(rowId); > alert('ItemUpdated'); > } > }) > .blur( function( event ) { > var $target = $(event.target); > if( $target.is('tr.rowData:text, tr.rowData textarea') ) { > varid = $target.parents('tr').attr('id'); > saveRow(id); > } > }); > }); > > (Well, a direct translation with a couple of liberties - I used the shorter > form of $(document).ready, and I compulsively changed the double quotes to > single quotes - which I recommend getting in the habit of doing, so when you > generate HTML code from your JS code, you can use double quotes in the HTML > without messy escaping.) > > As you can see, the code sets a single handler each for .click and .blur on > the BODY element. (You could use any other element that contains your > table.) It uses event.target to get the element that was actually clicked or > blurred, and then .is() to test the element against your original selectors. > This will ignore clicks and blurs on other elements and process the ones for > the elements you're interested in. > > I tried to understand the use of the varrowId, rowId, varid, and id > variables but couldn't make any sense of them. Are there some typos in > there, and missing "var" declarations? Or are those supposed to be global > variables? > > Reading between the lines, I'm guessing that the actual intent of the code > may be more like this: > > $(function() { > $('body') > .click( function( event ) { > var $target = $(event.target); > if( $target.is('.updateBtn') ) { > save( $target ); > } > }) > .blur( function( event ) { > var $target = $(event.target); > if( $target.is('tr.rowData:text, tr.rowData textarea') ) { > save( $target ); > } > }); > > function save( $target ) { > saveRow( $target.parents('tr').attr('id') ); > } > }); > > Does that look like what you want? > > -Mike > > > > > > > From: [EMAIL PROTECTED] > > > Thanks for the link and your response, but I guess I'm slow. > > I have two event handlers (click and blur) that I want to > > definite within my document.ready function. How am I > > supposed to use setTimeout? How do I how long to set the > > timeout for if I don't know how long it will take for the > > page to load? > > On May 16, 4:09 pm, "Karl Rudd" <[EMAIL PROTECTED]> wrote: > > > "Chunk" the code up using setTimeout(). > > >http://groups.google.com/group/jquery-en/browse_thread/thread/ > > aabbe7e... > > > > On Sat, May 17, 2008 at 5:56 AM, [EMAIL PROTECTED] > > > > > I have a page has a lot of data and can run slowly. As soon as I > > > > try and load this page, IE tells me > > > > >http://screencast.com/t/mXOBRKW1T2 > > > > > (the script is causing this page to run slowly, > > continue?). Anyway, > > > > I notice when I take out this block of JQuery code, the message > > > > disappears: > > > > > $(document).ready(function() { > > > > $('.updateBtn').click(function(){ > > > > var rowId = $(this).parents("tr").attr("id"); > > > > saveRow(rowId); > > > > alert("Item Updated"); > > > > }); > > > > > $('tr.rowData :text, tr.rowData > > textarea').blur(function() { > > > > > > > var id = $(this).parents("tr").attr("id"); > > > > saveRow(id); > > > > }); > > > > }); > > > > > Unfortunately, I need this code because I want to define these > > > > behaviors on my page. Is there a way to rewrite the > > > > above so that IE doesn't complain?- Ocultar texto de la cita - > > - Mostrar texto de la cita -- Ocultar texto de la cita - > > - Mostrar texto de la cita -