[jQuery] Re: jquery doesn't work after changing innerhtml

2008-05-06 Thread Richard D. Worth
Here are a couple of other options as well:

http://docs.jquery.com/Frequently_Asked_Questions#Why_do_my_events_stop_working_after_an_Ajax_request.3F

- Richard

On Tue, May 6, 2008 at 7:25 AM, motob <[EMAIL PROTECTED]> wrote:

>
> When you use innerHtml it completely destroys the anchor tag and
> replaces it with another one. Not sure if jQuery does this or the
> browser, but when you destroy an element, all event listeners are
> destroyed too. So you'll either have to re-initialize the click
> listener when you use innerHtml, or just simply change the text of the
> anchor tag like so:
>
> $("a.xx").click(function(){
>  var $this = $(this);
>  event.preventDefault();
>  if($this.text() == "click") {
>$this.text("click again");
>  } else {
>$this.text("click");
>  }
> });
>
> By changing the text of an element allows for the event listener to
> remain in place, since the element itself didn't actually get
> destroyed.
>
> Hope this helps
>
> On May 6, 4:58 am, biggie_mac <[EMAIL PROTECTED]> wrote:
> > I discovered this accidentaly today. I have an anchor like
> > click and a simple
> > jquery like
> >
> > jQuery().ready(function() {
> > $("a.xx").click(function(event){
> > event.preventDefault();
> > alert('u clicked');
> > });
> > });
> >
> > I run this, works fine, I get the alert when I click on the anchor.
> > Now I also have a button which when I click it changes the innerHTML
> > of the div with click again. basically it
> > changes an anchor with another which is the same but only has
> > different message. But it's still an anchor with xx class. Yet, when I
> > click on the second anchor, nothing happens. Anyone know why this
> > happens?Below the code I tried:
> >
> > Js:
> > jQuery().ready(function() {
> > $("a.hide").click(function(event){
> > event.preventDefault();
> > alert('ai facut click pe un a cu class hide');
> > });
> > });
> >
> > HTML:
> > click
> >  > onclick="document.getElementById('divb').innerHTML=' > class="hide" href="#">click2';";
> >
> > 10x
>


[jQuery] Re: jquery doesn't work after changing innerhtml

2008-05-06 Thread motob

When you use innerHtml it completely destroys the anchor tag and
replaces it with another one. Not sure if jQuery does this or the
browser, but when you destroy an element, all event listeners are
destroyed too. So you'll either have to re-initialize the click
listener when you use innerHtml, or just simply change the text of the
anchor tag like so:

$("a.xx").click(function(){
  var $this = $(this);
  event.preventDefault();
  if($this.text() == "click") {
$this.text("click again");
  } else {
$this.text("click");
  }
});

By changing the text of an element allows for the event listener to
remain in place, since the element itself didn't actually get
destroyed.

Hope this helps

On May 6, 4:58 am, biggie_mac <[EMAIL PROTECTED]> wrote:
> I discovered this accidentaly today. I have an anchor like
> click and a simple
> jquery like
>
> jQuery().ready(function() {
> $("a.xx").click(function(event){
> event.preventDefault();
> alert('u clicked');
> });
> });
>
> I run this, works fine, I get the alert when I click on the anchor.
> Now I also have a button which when I click it changes the innerHTML
> of the div with click again. basically it
> changes an anchor with another which is the same but only has
> different message. But it's still an anchor with xx class. Yet, when I
> click on the second anchor, nothing happens. Anyone know why this
> happens?Below the code I tried:
>
> Js:
> jQuery().ready(function() {
> $("a.hide").click(function(event){
> event.preventDefault();
> alert('ai facut click pe un a cu class hide');
> });
> });
>
> HTML:
> click
>  onclick="document.getElementById('divb').innerHTML=' class="hide" href="#">click2';";
>
> 10x