Cela est impossible sans que ni envelopper les deux noeuds dans des éléments ou déterminer en quelque sorte la position exacte des noeuds de texte et obligatoire puis à l'événement click
de certains parents. L'ancienne option est plus simple. Il suffit de les envelopper dans des portées:
<div id="text"><span>Some<span> <span>text</span></div>
Ou, si vous avez besoin de les envelopper tous automatiquement:
jQuery.fn.getTextNodes = function(){
return this.not('script').contents().map(function(){
var n = this.nodeType;
return n === 3 ? this : n === 1 ? jQuery(this).getTextNodes().get() : [];
});
};
jQuery('#text').getTextNodes().replaceWith(function(){
return jQuery(this.data.replace(/\S+/g, '<span>$&</span>')).filter('span').click(function(){
alert('You just clicked on the word: ' + jQuery.text([this]));
}).end();
});
Démo: http://jsfiddle.net/PYKqM/