2015-12-15 5 views
1

J'ai un code entre les balises pré et je veux attraper al ce code avec un événement onclick Ma structure HTML est comme ci-dessous:comment ajouter un identifiant unique à un événement onclick

<div class="Message"> 
    <div class="surroundpre"> 
    <span class="control-copytextarea" onclick="return fieldtoclipboard.copyfield(event, \\\'id1\\\')">[Select and Copy]</span> 
    <pre class="CodeBlock id="id22015640"> 
     <!-- code goes her --> 
    </pre> 
    </div> 
</div> 

Le pré Les éléments et la div avec la classe surroundpre sont créés par javascript. L'identifiant unique pour le pré:

$('pre').each(function(){ 

    if ($(this).attr('id') == undefined){ 
     $(this).attr('id','id'+Math.floor((Math.random() * 99999999) + 1)) 
    } 
}); 

Le div avec surroundpre est créé comme ci-dessous:

$('.Message .CodeBlock', this).wrap('<div class=surroundpre></div>'); 

La durée est créé avec la variable php: en combinaison

$SelectButton = '<span class="control-copytextarea" onclick="return fieldtoclipboard.copyfield(event, \\\'id1\\\')">[Select and Copy]</span><br />'; 

avec:

$('.surroundpre').prepend('$SelectButton'); 

Ma question: le id1 dans la variable php devrait être remplacé par le même identifiant unique que dans le pré-tag. Comment puis-je y parvenir? Ou existe-t-il une autre méthode pour y parvenir?

+0

Utiliser 'random 'pour générer un identifiant unique peut être moins préférable qu'un simple compteur. IE 'var nextUniqueIDCounter = 0;' alors '$ (this) .prop ('id', 'id' + nextUniqueIDCounter ++);' – teynon

+0

Vous dites 'php variable' ... est' $ SelectButton = ' [Sélectionner et copier]
';' généré en PHP? Comment l'appelez-vous? Est-il appelé avant le chargement de la page? – teynon

+0

Oui, tout ce code est dans une fonction publique; et le javascript est dans une .livequery (fonction() Une grande chaîne d'une variable php: $ Resultat = "jQuery (document) .ready (fonction ($) {..... et ainsi de suite .... – nuet

Répondre

0

Cela pourrait fonctionner pour vous, faire quelques changements, d'abord en PHP:

$SelectButton = '<span class="control-copytextarea" onclick="return fieldtoclipboard.copyfield(event, this.getAttribute(\"data-block-id\"))">[Select and Copy]</span><br />'; 

Puis, en JS:

$('pre').each(function(){ 
    var id; 
    if ($(this).attr('id') == undefined){ 
     id = 'id'+Math.floor((Math.random() * 99999999) + 1); 
     $(this).attr('id',id); 
     $(this).prev('span').attr('data-block-id',id); 
    } 
}); 

Maintenant, l'identifiant généré en js est attaché à la durée au même temps de création, quand il est disponible pour vous, et l'événement onclick prégénéré (en PHP) peut y accéder quand il en a besoin (tant que le code de paramétrage d'ID n'a pas été exécuté).