1

我正在尝试使用 Javascript 和 jQuery 构建便笺。我遇到的问题是,draggable()不能deleteNote()新附加的元素上调用函数。我怎样才能解决这个问题?

编辑: ID 实际上应该得到一个附加的数字,我不知道如何实现,因为我不知道如何创建一个计数器。例如newbox1

我在 jsfiddle 上的代码:http: //jsfiddle.net/wowpatrick/qexRS/4/

4

4 回答 4

1

您可以.click在创建新元素后将处理程序添加到它。

于 2012-05-02T13:04:12.453 回答
1

您不应该创建具有相同 ID 的多个元素,而是使用类。

此外,您可以立即将 附加.draggable()到创建的元素而不是定位$('#newbox')

这是一个效果更好的叉子:http: //jsfiddle.net/YvtLb/

关键在这里:

var postit = $('<div class="ui-widget-content newbox" style="top:' + e.pageY + 'px; left: ' + e.pageX + 'px;"><span id="close">Delete comment</span><p>Your comment:</p><textarea></textarea></div>').draggable();
$('#canvas').append(postit);
于 2012-05-02T13:04:45.490 回答
1

您需要实时附加事件处理程序,因为在您最初调用它们时不存在任何元素。

使用 jQuerys live()(Attention:deprecated Docu ) 或使用新的 jQuery 版本on()( Docu ),以便能够将事件附加到每个新创建的注释上。

也不要使用 ID,因为这会产生无效标记,因为 ID 必须始终是唯一的。改用类。

于 2012-05-02T13:11:36.227 回答
0

这是因为页面加载#newbox不存在。更好的方法是将新元素存储在变量中,附加它,然后应用draggable,试试这个:

// Create the new comment at the corsor postition
var $newbox = $('<div class="ui-widget-content" id="newbox" style="top:' + e.pageY + 'px; left: ' + e.pageX + 'px;"><span id="close">Delete comment</span><p>Your comment:</p><textarea></textarea></div>');
$('#canvas').append($newbox);
$newbox.draggable();

示例小提琴

于 2012-05-02T13:05:10.957 回答