是否可以使用javascript复制javascript?

时间:2010-12-15 21:36:12

标签: javascript jquery

是否可以使用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? 我希望可以单独发布这个问题,因为这是一种好奇的事情。

4 个答案:

答案 0 :(得分:1)

编辑:我认为这就是你想要的。这个(demo)将填充文本区域以便于复制:

<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>具有相同的“点击”处理程序,那么你应该以完全不同的方式实现它:

  1. 使用“class”而不是“id”来标记应受影响的<div>元素;说,“cloneMe”
  2. 使用jQuery .live()或(更好).delegate()工具来设置处理程序,使其能够处理冒泡事件,因此可以处理克隆<div>的点击次数块。

      
  3. (然后在你的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');