JQuery .append()单独的元素

时间:2012-02-26 21:38:35

标签: javascript jquery html append

我制作了一个脚本,可以在画布上添加图像和文本框。为了使文本框显示在图像上,我需要将CSS应用于图像。因此,我决定将div <img>与图片分开,<text>为文本。

这会产生两个问题。当我第一次添加图像和文本时,两个元素被认为是分开的,我只能拖动图像或文本,而不是同时拖动两个元素。此外,当我添加另一个图像和另一个文本框时,两个图像不会显示在彼此之上,而是文本框旁边的图像和图像旁边的图像。

所以我的问题是这个。是否有可能将这两个元素合并为一个,当产生它们时,让它们每次都以相同的方式做到这一点?

这是我为此制作的Javascript。

$(document).ready(function() {
$("#img").draggable();
$("#text").draggable();
});

function addEvent() {
$("#img").append("<img src='Sticky_Note.png'</a>")
$("#text").append(" <textarea name='comments' x-webkit-speech='x-webkit-speech'style='width:380px;height:300px; background: none; border:none; font-size:24px; color:#0033FF;font-family:comic sans ms' />")

}

如果这不是足够的信息(我很抱歉,抱歉),我已经找到了一个前沿的链接here.

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

尝试在图片和文字元素周围创建包装<div>,例如<div id="#wrapper">。然后,您可以执行以下操作:

$('#wrapper').draggable();

您的addEvent代码如下所示:

function addEvent() {
    $("#wrapper").append("<img src='Sticky_Note.png'</a>");
    $("#wrapper").append(" <textarea name='comments' x-webkit-speech='x-webkit-speech'style='width:380px;height:300px; background: none; border:none; font-size:24px; color:#0033FF;font-family:comic sans ms' />");  
}

答案 1 :(得分:0)

您的实施存在一些问题,我会忽略基本的文档问题,因为我认为您正在组织一个快速示例:)

当你附加一个新的'note'时它不能单独移动,它是可移动的容器,所以它们只是堆叠起来,因为你只是向软木板容器添加更多内容,即:另一个textarea / image,然后是另一个textarea和/或图像。

我已经在pastebin here上提出了一个解决方案,请随时查看,希望它有助于指出正确的方向。

实际上,我也会为后人嵌入它

<!DOCTYPE html>
<html>
<head>
    <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/>

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
    <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>

    <style>
        #corkboard { position: relative; }
        #corkboard textarea { position: absolute; width: 380px; height: 300px; top: 100px; left: 60px; background: none; border: none; font-size: 24px; color: #03f; font-family: 'comic sans ms', serif; }
        #corkboard img { position: absolute; }

        .corkboard-item {
            position: absolute;
            float: left;
            width: 500px;
            height: 500px;
        }
    </style>

    <script>
        $( document ).ready( function() {
            // Create our corkboard item
            //
            $corkboard_item = $( '<div></div>' );
            $corkboard_item
                .addClass( 'corkboard-item' )
                .append( '<img src="http://www.bookofsam.com/corkboard/Sticky_Note.png" />' )
                .append( '<textarea name="comments" x-webkit-speech="x-webkit-speech">Enter your note</textarea>' );

            // Counter goodness
            $x = 1;


            // Make sure the one we click is always at the top
            //
            $( 'img, textarea' ).live( 'click', function( e ) {
                e.preventDefault();

                $( '.corkboard-item' ).each( function() {
                    $( this ).css({ 'z-index':1 });
                });

                $( this )
                    .parent()
                    .css({
                        'z-index':2
                    })
            });


            // Add one when we click the button
            //
            $( 'a.add-item' ).live( 'click', function( e ) {
                e.preventDefault();

                var item = $corkboard_item.clone();
                $( item )
                    .find( 'textarea' )
                    .attr({
                        'name' : ( 'comment-' + $x )
                    });

                $x++;

                $("#corkboard").append( $( item ).draggable() );
            });
        });
    </script>
</head>
<body>
    <p>CORKBOARD TEST - 0.8.555 </p>

    <a href="#" class="add-item"><img src='http://www.bookofsam.com/corkboard/Note_Scale.png' align="right" /></a>

    <div id="corkboard"></div>
</html>

考虑到这一点,我应该将'note'图像作为背景图像放在'corkboard-item'上。

:)

NBSP;