Hi

I'm just begun playing with jquery and I think it's great, but I've
run into some problems which I think needs to be solved with "Event
Bubbling" but I don't really understand how I'm supposed to do!


I'm using the jTip plugin on two places, one which is loaded inside a
div using:

        function updateDiv() {
                        $('.container').load("update.php?test=1",
                        function(event) {
                                $('#innerpanel').fadeIn("slow");
                                if ($(event.target).is('.container')) {
                                        $.getScript("jtip.js");
                                }
                        });
        }

And what's loaded are basically links using the jTip such as

        <a href="#" class="tooltip" id="test1" rel="info.php?id=100">hover
here for tool tip</a>


Here's the (necessary?) code from jtip.js

        $(document).ready(JT_init);

        function JT_init(){
                $("a.tooltip").hover(function(){
                        JT_show(this.href,this.id,this.rel)},
                        function(){
                                $('#JT').remove()
                        })

                .click(function(){return false});
        };

        function JT_show(url,linkId,info){
                ......
        }

Can also be found here: http://www.codylindley.com/blogstuff/js/jtip/js/jtip.js



Problem is that whenever I run updateDiv() and thus refreshing that
div, the tooltips on the rest of the page is run twice! And the more I
run updateDiv(), the more the other tooltips multiply.

I've read http://docs.jquery.com/Tutorials:AJAX_and_Events
and tried to apply the (event) into the updateDiv(), but I don't
really understand how I'm supposed to make it work.

I recently downloaded livequery plugin but I can't seem to understand
how to implement this at all. Tried this for example:

        $('a.tooltip')
        .livequery(function(event) {
                $(this).hover(function(){
                        JT_show(this.href,this.id,this.rel)},
                        function(){
                                $('#JT').remove()
                        })
                        .click(function(){return false});
        });

And also removed the $.getScript from updateDiv();

Which is a bit of an improvement as the tooltips outside the refreshed
div only loads twice instead of like 4 or more, as it did before after
having refreshed a couple of times. Just noticed that the tooltips
always loads twice (except in the div when I have updated i), so it
wasn't that good after all :)

I think I need to have the livequery function above only apply to the
div only...


So I was trying a bit more and if I change
        $('a.tooltip')
        .livequery
to
        $('#innerpanel > a.tooltip')
        .livequery

everything seems to work!?


Maybe I should have just post the question a bit earlier, instead of
testing so much :)

Anyway... Don't want to delete everything so I might ask if this
method is okay, or if there's any better way to do it. Maybe this does
unnecessary things?

And also, is there any difference in loading time/performance if I
use .load or $.ajax when updating the div?

Thanks :)

Reply via email to