jQuery:在HTML追加后使用Widget

时间:2012-03-10 21:59:37

标签: jquery html dom widget append

我有一个动态页面,我在其中根据一些DataBase配置创建了一些元素(HTML输入)。

比方说,我的初始HTML页面可能没有控件(除了Masterpage之外),按下按钮后就会创建它们,例如。

添加这些控件后,使用div并使用.append,我需要在新创建的某些SELECT元素上使用Widget(如jQuery UI Multiple Select Widget中所示)。

事情是,这是行不通的。

我也做了这个测试:

  • 在HTML页面上放置一个SELECT元素(在html上,不是我想要的动态)。
  • 如果我在$(document).ready功能上启动小部件,它就会启动并且可以多选。
  • 在评论上述功能时,如果我只在按钮上单击启动小部件,则SELECT将不会变为多选。

请你帮助我吗?这是因为某些DOM的事吗?以下是此“引擎”的摘录:http://jsfiddle.net/SWyw9/

2 个答案:

答案 0 :(得分:2)

回答太迟了,但我认为这个答案可能有助于未来的设计师/开发人员。 我们知道jquery中有一个delegate()函数可以将事件处理程序绑定到动态添加的元素。

我觉得这个delegate()函数可以在你的情况下使用 请查看以下代码段。

// Here you are using delegate to attach mouse over event handler to the existing elements as well as elements which will be added dynamically in future.
$('#myContainer').delegate('.myDraggableClass', 'mouseenter', function() {

  var $this = $(this);
  // Checking whether or not the widget is applied to the element.
  if(!$this.is(':data(draggable)')) {

    // As widget is not applied, applying it.
    $this.draggable({ /* configure draggable here */  });
  }
});

从下面给出的链接复制代码段。 查看更多详细信息: http://enterprisejquery.com/2010/07/configuring-ui-widgets-and-interactions-with-live/

答案 1 :(得分:1)

我不确定你在问什么。

这似乎是一个具有约束力的问题。您不能将事件绑定到不存在的元素(动态元素),除非您使用已折旧的bind()或新的“on”。

$("#body-id").on("click", ".widget-button", function(event){
    //do something
});

这会将按钮单击附加到body标签,其id为body-id。然后,身体会监听未来的小部件按钮点击,因为当动态小部件没有时,正文就会存在。

不确定这是不是你要问的。

好吧,我把你的小提琴分成了这个: http://jsfiddle.net/TheFiddler/USHc5/4/

这就是你追求的目标吗?

1)创建一个类型数组 2)将其传递给BuildHTML 3)拆分道具 4)每个开关盒 5)渲染新的HTML