Thanks! I thought events would stay unless the actual element the event is attached to is changed, not the necessarily the contents of the element.
I guess I'll be rewriting that portion... Thanks again... -Nate On Feb 11, 3:11 pm, "Kyle Browning" <[EMAIL PROTECTED]> wrote: > Use either the live query plugin OR, reapply the events. > > The issue is, the events are added once the dom is ready. after that, the > functions never get called again. So if you change out elements, your events > are gone. Live Query solves this. > > Kyle > > On Feb 11, 2008 11:13 AM, Nate <[EMAIL PROTECTED]> wrote: > > > > > I created three table elements using jquery, and each td cell in the > > tables has hover and click events attached to it. > > > The basic table generation is cached in an array and the only changes > > that happen to the initial content occur by updating individual td > > contents using $(this).text(val). All of the events fire correctly the > > first time a table is rendered, but when the table is updated, only > > using .text(..), the events disappear. I've tried tracing what is > > happening, but eventually get lost, and was hoping someone would be > > able to explain why the events are disappearing. > > > Here are the affected parts of the code for reference: > > > var drawInitial = function(wks) { > > var cal = []; > > for(var i = 4; i <= 6; i++) { > > cal[i] = $('<table cellpadding="0" cellspacing="0" > > border="0"></table>'); > > for(var j = 0; j < i; j++) { > > drawWeek().appendTo(cal[i]); > > } > > } > > > drawInitial = function(wks) { > > return cal[wks]; > > } > > return drawInitial(wks); > > } > > > function drawWeek() { > > var wk = $("<tr></tr>"); > > for(var j = 0; j < 7; j++) { > > drawDay(j).appendTo(wk); > > } > > return wk; > > } > > > function drawDay(dayOfWeek) { > > var css = ""; > > > (dayOfWeek == 0 || dayOfWeek == 6) ? css = "calendarWeekend" : css > > = "calendarWeekday"; > > var day = $('<td class="calendarBox '+css+'"></td>'); > > day.hover( > > function() { if($(this).text()) {$ > > (this).addClass("calendarHover");} }, > > function() { if($(this).text()) {$ > > (this).removeClass("calendarHover");} } > > ); > > day.click( function() { > > if($(this).text()) { > > setSelected($(this).text()); > > } else { > > delayHide(); > > } > > }); > > return day; > > } > > > function drawMonth() { > > var year = widgetDate.getFullYear(); > > var month = widgetDate.getMonth(); > > > var firstDay = new Date(year, month, 1).getDay(); > > var daysInMonth = Date.getDaysInMonth(year, month); > > var weeksInMonth = Math.ceil((firstDay + daysInMonth) / 7); > > var cal = drawInitial(weeksInMonth); > > var i = 0, //week > > j = 1; //day of month > > > cal.find("tr:not(.calendarWeek)").each( function() { > > $(this).children("td").each( function() { > > if(j > firstDay && j <= firstDay + daysInMonth) { > > $(this).text(j - firstDay); > > } else { > > $(this).text(""); > > } > > j++; > > }); > > i++; > > }); > > > $("#"+widgetId).html(cal); > > }