0

所以我在 js 中不太好......在将 div 添加到 dom 后出现问题,无法理解,之后如何使用它。

所以我有一个简单的代码,它添加了 div。

$('#add_frame_by_button').click(function(){
        $('body').append(crazy_frame);
    });

也有

$("#resizable").draggable().resizable({
        resize: function(event, ui) {
            //some code
        }
    });

那么添加后如何绑定它工作呢?

4

4 回答 4

2

您可以在添加 div 并将事件绑定到它之后尝试遍历它。

$('body').append(crazy_frame).children('#resizable').draggable()...

现在可能发生的$("#resizable").draggable()...是在加载页面时绑定事件,但在页面加载后附加内容。

您也可以尝试使用 on()带有选择器的 jQuery 来始终绑定事件,或者live()/delegate()如果您使用的是 1.7 之前的 jQuery。 初始点击如何附加到对象上没有问题,因此这无关紧要。

于 2012-06-22T14:29:43.230 回答
0

正如你所说的绑定是你的答案。您将单击事件绑定到父元素,它将监视任何通过的单击事件。目前,您仅在可用元素上设置点击事件。

http://api.jquery.com/bind/

来自他们网站的样本:

$('#foo').bind('click', function() {
  alert('User clicked on "foo."');
});
于 2012-06-22T14:28:35.650 回答
0

你的问题还不够清楚。

我认为这就是您要寻找的东西:

如果你想添加一个框架,你需要构建一个,所以你必须附加这个:

<div id='crazy_frame' style='width:200px;height:100px;background-color:red'></div>

我给出了一些尺寸和颜色以便对我可见,当然您可以更改尺寸和颜色。

那么如果你想给这个“框架”一个可拖动的属性,你只需要调用可拖动的方法。

<script type="text/javascript">
$(document).ready(function(){
 $('#add_frame_by_button').click(function(){
  $('body').append("<div id='crazy_frame' style='width:200px;height:100px;background-      color:red'></div>");
  $('#crazy_frame').draggable();
 });    

});

</script>

如果你这样做,你将不得不很快面对一个问题。告诉我我是否正确

于 2012-06-22T15:11:08.953 回答
0

我认为您正在寻找 jQuery 的.on()功能。其他一些答案已经提到了该.live()功能,但从 jQuery 1.7 开始,该功能已被弃用。

.on()函数将让您侦听从子元素冒出的特定事件并做出适当的响应。如果将该.on()方法应用于将包含动态添加的 's 的元素,则可以定义一个函数,该函数将在该元素内<div>的特定事件冒泡时被调用。<div>

此外,您是否有理由不能简单地在处理程序本身.resizable()中应用各种.draggable()功能?.click()

于 2012-06-22T15:03:46.397 回答