2011-09-06 4 views
2

Je souhaite autoriser les utilisateurs de ma page à cliquer sur un mot d'un paragraphe pour déclencher une info-bulle (comme une définition de mot ou un autre événement), mais je ne veux pas pour gonfler mon code HTML avec des étiquettes enroulées autour de chaque mot.jQuery - séparer l'événement onClick pour chaque mot dans un paragraphe

L'effet que je vais donner est similaire à ce que fait le New York Times dans ses articles. Double-cliquer sur un mot dans un article NYT fait apparaître une info-bulle, sur laquelle vous pouvez cliquer pour plus d'informations. Example. Mais vous remarquerez dans la source qu'il n'y a pas de balisage dans la page d'origine pour ces infobulles.

Est-ce que cela peut être réalisé avec jQuery? Quelque chose comme, onclick n'importe quel mot?

Répondre

1

c'est en fait pas sur le clic, c'est sur la sélection je pense. Regardez le this plugin.

Mise à jour:

Aussi j'ai trouvé discussion similaire sur ths Stackoverflow: Tooltip triggered by text selection

+0

cela ressemble le bon début. Je pense que la méthode "Tooltip triggered by Text selection" a deux avantages: (a) elle peut être déclenchée à la fois par un double clic et en faisant glisser une sélection de texte, et (b) elle peut limiter les mots qui déclenchent l'info-bulle. C'est important parce que je vais vouloir assigner un contenu d'info-bulle différent à certaines expressions et éventuellement à chaque mot. Merci beaucoup pour votre aide! – Heraldmonkey

0

Peut-être que vous pouvez essayer de le faire comme ceci:

var openTag = "<a href='#' onclick='javascript:wordAction(this)'>"; 
var closeTag = "</a>" 

var paragraph = $("#paragraph"); 
var newParagraphHtml = paragraph.html().replace(" ", closeTag + openTag + " "); 
paragraph.html(openTag + newParagraphHtml + closeTag); 

var wordAction = function(el) { 
    var word = el.html(); 
    // do wat you want with your word 
} 

Cordialement

Questions connexes