我在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。 我怎样才能做到这一点? 或者还有其他方法可以实现这一目标吗?
答案 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设置代码运行后。)