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);
> > }

Reply via email to