2010-04-28 5 views
3

Je me demande si quelqu'un peut aider avec un problème jQuery que j'ai. J'utilise les infobulles de la bibliothèque Jquery Tools pour créer une fenêtre contextuelle lorsque vous passez la souris sur une image hrefed, ce que je veux utiliser pour cusomiser l'appel pour changer le contenu dans la DIV.Obtenir de la valeur de href en utilisant jQuery

Les liens que je me sers sont sous la forme:

<a href="/venue/1313.htm" class="quickView"><img src="/images/site/quickView83.png" alt="Quick View" width="83" height="20" /></a> 

Le code que je utilise pour déclencher la pointe est:

$(".quickView").live('mouseover', function() 
    { 
     if (!$(this).data('init')) 
     { 
      $(this).data('init', true); 
      ajax_quickView(); 
      $(this).tooltip 
      ({ 
       /* tooltip configuration goes here */ 
       tip: "#quickViewWindow", 
       position: "right", 
       offset: [0, -300], 
       effect: 'slide' 
      }); 
      $(this).trigger('mouseover'); 
     } 
    }); 

J'ai essayé la fonction suivante pour saisir l'ID (dans l'exemple ci-dessus, 1313) à partir du lien:

function ajax_quickView(){ 
     var pageNum = $("a.quickView").attr("href").match(/venue/([0-9]+)/).htm[1]; 
     $("#quickViewWindow").load("/quick-view/", function(){}) 
    } 

Cependant, je pense que c'est là où il tombe, je pense que mon regex est prob à blâmer ...

Une fois que je reçois le pageNum var je suppose que je peux passer dans le .load comme:

$("#quickViewWindow").load("/quick-view/", {id : pageNum }, function(){}) 

Un grand merci

Répondre

5

Tout d'abord, vous ne l'avez pas échappé correctement le caractère / dans votre regex:

/venue/([0-9]+)/ 

// should be 
/venue\/([0-9]+)/ 

Deuxièmement, vous ne l'avez pas correctement mis fin à votre regex, la ligne entière a quelques erreurs de syntaxe:

.match(/venue/([0-9]+)/).htm[1]; 

// should be 
.match(/venue\/([0-9]+).htm/)[1]; 
+0

Merci, ont changé cela. Cependant, il ne semble que sélectionner le premier lien sur la page, indépendamment de celui sur lequel je passe la souris. Dois-je ajouter quelque chose pour utiliser le lien mouseover? –

+0

@bateman_ap: C'est parce que vous utilisez un sélecteur dans la fonction jQuery, qui retournera une liste d'éléments et récupèrera l'attribut 'href' pour le premier de cette liste. Dans votre gestionnaire 'mouseover', vous devez passer une référence à' this', par ex. 'ajax_quickView (this)', et utilise cette référence au lieu d'un sélecteur. –

+0

Désolé, une dernière question. J'ai utilisé ajax_quickView (this); dans mon code, si j'utilise alert (this); alors tout semble bien, il montre l'URL correcte. Cependant dans ma fonction j'utilise fonction ajax_quickView (pageUrl) { var pageNum = pageUrl.match (/ lieu \/([0-9] +). Htm /) [1]; $ ("# quickViewWindow") de charge. ("/ Quick view /", {uid: pageNum}, function() {})} ce Présumé est faux que je suis obtenir: pageUrl.match est pas une fonction –

0

Je ne sais pas plugin tooltip mais je pense que votre approche est un peu ... lourde. J'ai travaillé avec les outils jQuery et leur superposition et il a permis d'enregistrer un callback qui recevrait la source de l'événement, dans ce cas ce serait l'image hrefd que vous pouvez demander pour l'URL réelle. Peut-être pas la réponse que vous cherchez, mais je pense que vous rendez cela plus compliqué que nécessaire.

+0

J'ai regardé la superposition, je l'utilise ailleurs sur mon site. Cependant, il semblait être un peu lourd dans son aspect et me pardonner si je me trompe, j'avais du mal à le positionner par rapport au lien –

+0

Oh, mon code est prob terrible, je ne peux pas dire que je suis un whiz à tout cela, je m'enseigne davantage en faisant et en demandant! –

Questions connexes