1

我最初尝试使用 jQuery 的 .css() 来执行此任务,但失败了。我尝试了几种方法,但都失败了。我更愿意学习如何使用 jquery 的库来执行这个功能。jQuery UI 用于可拖动和可调整大小的 UI.My

我当前的代码:

<div id="p1"></div>

<link rel="stylesheet" href="script\jquery-ui-1.10.3.smoothness\css\smoothness\jquery-ui-1.10.3.custom.min.css" />
<script src="script/jquery-1.10.1.min.js"></script>
<script src="script/jquery-ui-1.10.3/ui/jquery-ui.js"></script>

<link rel="stylesheet" type="text/css" href="style/style.css">
<script type="text/javascript">
counter = 0;
$(function() {        
    $(document).on("click",'#addNewCo',function(e){
        e.preventDefault();
        var newCo = $('<div class="note" id="note'+counter+'" onclick="changecolor("note'+counter+'","EB0955")">note</div>').draggable({ scroll: true, scrollSpeed: 100 }).resizable();
        $('#area').append(newCo);
    });
});
function changecolor(id,color) {
    document.getElementById(id).style.backgroundColor = '#'+color;
}
</script>
<a id="addNewCo" href="javascript:void(0);"><button>New Note</button></a>
<div id="area"></div>
4

4 回答 4

2

不要对新元素使用内联 JavaScript,.on()而是像在代码的其他部分中那样使用委托。尝试:

$(function () {
    $(document).on("click", '#addNewCo', function (e) {
        e.preventDefault();
        var newCo = $('<div class="note" id="note' + counter + '")">note</div>').draggable({
            scroll: true,
            scrollSpeed: 100
        }).resizable();
        $('#area').append(newCo);
        counter++;
    });
    $(document).on("click", '.note', function () {
        changecolor($(this).attr('id'), 'EB0955');
    });
});

jsFiddle 示例

你也忘了增加你的计数器。您还可以将 jQuery 用于您的第二个功能:

function changecolor(id, color) {
    $('#'+id).css('backgroundColor', '#' + color);
}
于 2013-06-07T16:16:37.680 回答
0

试试这个,也许它可以帮助:

HTML:

<a id="addNewCo" href="javascript:void(0);"><button>New Note</button></a>
<div id="area"></div>

JS:

counter = 0;
$('#addNewCo').click(function(e) {
    e.preventDefault();
    var newCo = $('<div />', {
                    class: 'note',
                    id: 'note' + counter,
                    click: function() {
                        $(this).css('background', '#EB0955');
                    }
                });
    newCo.draggable({ scroll: true, scrollSpeed: 100 }).resizable();

    $('#area').append(newCo);
});

CSS:(我用它来知道笔记是什么时候创建的,因为我没有你的风格)

.note {
    background: yellow;
    width: 50px;
    height: 50px;
}

这是小提琴

于 2013-06-07T16:34:56.627 回答
0

这是另一个解决方案:http: //jsfiddle.net/zbPaU/1/

此解决方案在您创建元素时调用绑定函数。

$(function() {   
counter = 0;
$('#addNewCo').click(function(){
    var newCo = $('<div class="note" id="note'+counter+'" >note</div>');
    $('#area').append(newCo);
    nbind('#note'+counter);
    counter += 1;
    return false;
});
function changecolor(obj, color) {
    var colour = "#"+color;
    obj.css("background", colour);
}
function nbind(arg) {
    $(arg).bind('click', function() {
        changecolor($(this), "EB0955");
    });   
}
});
于 2013-06-07T16:24:10.830 回答
0

你可以做

$(function() {        
$(document).on("click",'#addNewCo',function(e){
    e.preventDefault();
    var newCo = $('<div class="note">note</div>').draggable({ scroll: true, scrollSpeed: 100 }).resizable();
    $('#area').append(newCo);
});
$("#area").on("click",".note",function(){
     $(this).css("background","#EB0955");
});
});    

http://jsfiddle.net/8qXP3/

于 2013-06-07T16:17:21.677 回答