如何为onclick事件添加唯一ID

时间:2015-12-15 23:08:01

标签: javascript uniqueidentifier

我在pre标签之间有一些代码,我想用onclick事件捕获该代码 我的html结构如下:

substr($number,0,-1); // everything besides the last decimal

pre前级元素和带有class surroundpre的div是由javascript创建的。 pre的唯一ID:

<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>

使用surroundpre创建的div如下所示:

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

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

使用php变量创建范围:

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

结合:

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

我的问题:php变量中的 id1 应该替换为与pre标签中相同的唯一ID。 我怎样才能做到这一点? 或者还有其他方法可以实现这一目标吗?

1 个答案:

答案 0 :(得分:1)

这可能对您有用,请先在PHP中进行一些更改:

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

然后在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);
    }
 });

现在,js中生成的id在创建的同时附加到span,当它可用时,预生成(在PHP中)onclick事件可以在需要时访问它(只要它是ID设置代码运行后。)