[jQuery] Tooltip weergeven lukt niet*

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • bindsa
  • Registratie: Juli 2009
  • Niet online
Ik heb het volgende script gemaakt, maar hij werkt niet (met jQuery):

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
this.vtip=function(){
    this.xOffset=-30;
    this.yOffset=30;
    $(".vtip").unbind().hover(function(a){
        this.t= this.children('p').html();
        //this.title="";
        this.top=(a.pageY+yOffset);
        this.left=(a.pageX+xOffset);
        $("body").append('<p id="vtip">'+this.t+"</p>");
        $("p#vtip").css("top",this.top+"px").css("left",this.left+"px").fadeIn("fast")
    },
    function(){
        this.title=this.t;
        $("p#vtip").fadeOut("fast").remove()
    }).mousemove(
            function(a){
                this.top=(a.pageY+yOffset);
                this.left=(a.pageX+xOffset);
                $("p#vtip").css("top",this.top+"px").css("left",this.left+"px")
            }
        )
};


Als ik bijv. een tabel heb die er als volgt uit ziet:
HTML:
1
2
3
4
5
<table>
<tr>
<td><p>bla bla bla</p></td>
</tr>
</table>


Dan wil ik dat die tekst uit die paragraaf in een soort tooltip weergegeven wordt, dit werkt echter niet, de hele code werkt, alleen deze regel niet:

JavaScript:
1
        this.t= this.children('p').html();


Weet iemand wat daar mis mee is?

Acties:
  • 0 Henk 'm!

  • Kiphaas7
  • Registratie: Februari 2005
  • Laatst online: 00:09
je laat jquery functies los op een non-jquery object?

JavaScript:
1
this.t= $(this).children('p').html();

Acties:
  • 0 Henk 'm!

  • bindsa
  • Registratie: Juli 2009
  • Niet online
Dat werkt ook niet, ik moet gewoon de HTML uit de paragraaf hebben en die in variabele t stoppen. Heb alleen geen flauw idee hoe.

Acties:
  • 0 Henk 'm!

  • Manuel
  • Registratie: Maart 2008
  • Laatst online: 14-09 14:15
Ik had dit echt anders aangepakt als ik jou was, hetzelfde met:
JavaScript:
1
$("p#vtip").css({top: this.top+"px", left: this.left+"px" }).fadeIn("fast") 


Verder hoe roep jij deze plugin aan? Als je namelijk
JavaScript:
1
2
3
4
5
6
7
jQuery.fn.eigenfunctienaam = function() {
    this.each(function() {
          //Hier je code.. alleen dan hoef je geen children meer te gebruiken.
    });
}

$("#watmoetwordengeholverd").eigenfunctienaam();

Leuk voorbeeld: http://snook.ca/archives/javascript/jquery_plugin

Acties:
  • 0 Henk 'm!

  • bindsa
  • Registratie: Juli 2009
  • Niet online
Opgelost, dit werkt wel:

JavaScript:
1
this.t= $(this).find(":nth-child(1)").html();

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 10-09 08:45
Manuel schreef op dinsdag 19 januari 2010 @ 08:13:
Ik had dit echt anders aangepakt als ik jou was, hetzelfde met:
JavaScript:
1
$("p#vtip").css({top: this.top+"px", left: this.left+"px" }).fadeIn("fast") 


Verder hoe roep jij deze plugin aan? Als je namelijk
JavaScript:
1
2
3
4
5
6
7
jQuery.fn.eigenfunctienaam = function() {
    this.each(function() {
          //Hier je code.. alleen dan hoef je geen children meer te gebruiken.
    });
}

$("#watmoetwordengeholverd").eigenfunctienaam();

Leuk voorbeeld: http://snook.ca/archives/javascript/jquery_plugin
Vergeet niet altijd return this.each(... te doen om chaining niet te breken in je plugins.

Acties:
  • 0 Henk 'm!

  • Manuel
  • Registratie: Maart 2008
  • Laatst online: 14-09 14:15
@Bosmonster: Ja inderdaad, was het vergeten. ty voor aanvulling. :)

@L0calh0st: Waarom los je het trouwens zou op? Je kan net zo goed een plugin maken die makkelijker werkt waar je simpelweg een title van een bestaand element zelf kan laten weergeven.

Acties:
  • 0 Henk 'm!

  • bindsa
  • Registratie: Juli 2009
  • Niet online
Manuel schreef op dinsdag 19 januari 2010 @ 15:42:
@Bosmonster: Ja inderdaad, was het vergeten. ty voor aanvulling. :)

@L0calh0st: Waarom los je het trouwens zou op? Je kan net zo goed een plugin maken die makkelijker werkt waar je simpelweg een title van een bestaand element zelf kan laten weergeven.
Het was oorspronkelijk ook met het title element, maar ik wilde iets meer opmaak en <br /> tags e.d. in title element zijn niet toegestaan.

Acties:
  • 0 Henk 'm!

  • Manuel
  • Registratie: Maart 2008
  • Laatst online: 14-09 14:15
Maar dan als nog had ik het heel anders aangepakt. Gewoon die HTML dan baseren op een hidden p zoals je dat nou ook doet maar dan zorgen dat je hem ook als $("#element").tooltip() kunt gebruiken. Scheelt je achteraf heel veel dubbele codes indien je dit blijft hanteren.
Pagina: 1