是否可以使用javascript复制javascript?例如:
<div class="copyThis">
<script language="javascript">
$(function()
{
$("#click").click(function(e){
$('.copyThis').clone().appendTo('#copyArea');
e.preventDefault();
});
});
</script>
CONTENT CONTENT CONTENT CONTENT CONTENT CONTENT CONTENT CONTENT CONTENT
<div style="width: 200px; height: 50px; background-color: gray;">
<a id="click" href="">click here to copy</a>
</div>
<div id="copyArea">
Put here:
</div>
</div>
但这不会复制标签及其内容。至少,不是我所知道的。
注意: 我发现这个问题与我在这里发布的另一个问题有关:Infinite-loop question: Is it possible to make a "Copy this code to share", with a "copy this code to share" inside of it? 我希望可以单独发布这个问题,因为这是一种好奇的事情。
答案 0 :(得分:1)
<div id="copyThis">
<script language="javascript">
$(function()
{
$("#click").click(function(e){
$('#copyArea').val($('#copyThis').html());
e.preventDefault();
});
});
</script>
CONTENT CONTENT CONTENT CONTENT CONTENT CONTENT CONTENT CONTENT CONTENT
<div style="width: 200px; height: 50px; background-color: gray;">
<a id="click" href="">click here to copy</a>
</div>
<textarea rows="10" cols="40" id="copyArea"></textarea>
</div>
你在ready
之前进行了DOM操作。使用:
<script language="javascript">
$(function()
{
$("#click").click(function(e){
$('#copyThis').clone().appendTo('#copyArea');
e.preventDefault();
});
});
</script>
请参阅the demo。
答案 1 :(得分:0)
注意:这个答案是针对一个与实际问题不同的问题:-)我会把它留在这里作为历史好奇心。
问题很可能是你的<script>
标签没有被执行。如果你想要发生的是克隆的<div>
具有相同的“点击”处理程序,那么你应该以完全不同的方式实现它:
<div>
元素;说,“cloneMe”使用jQuery .live()
或(更好).delegate()
工具来设置处理程序,使其能够处理冒泡事件,因此可以处理克隆<div>
的点击次数块。
(然后在你的Javascript某处:)
$(function() {
$('body').delegate("div.cloneMe", "click", function(ev) {
$(this).clone().appendTo('#copyArea');
ev.preventDefault();
});
});
现在你应该能够克隆到你内心的内容,而你不必担心那些糟糕的旧Javascript会如此突兀地嵌入你的代码中。
编辑 - 啊 - 我现在看到我对被点击的内容感到十分困惑。如果点击发生在单独的按钮(或<a>
或其他)上,那么根本不需要将脚本卡在页面中间;整个事情应该只是一个简单的事件处理程序设置。
答案 2 :(得分:0)
我认为,通过jquery的实时方法可以了解您尝试做的事情。
<div class="copy">
<a class="click-me">click me</click>
</div>
<script type="text/javascript">
$('.click-me').live('click',function(e){
$(e).parent().clone().appendTo('#copyArea');
})
</script>
使用Live会将新元素重新绑定到点击处理程序,而无需复制javascript块
答案 3 :(得分:0)
如果您还希望克隆click事件,则需要在克隆中将withDataAndEvents参数设置为true
$( 'copyThis。 ')克隆(真).appendTo(' #那么copyArea');