首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dojo UI元素与jQuery (Dijit)表单元素

Dojo UI元素与jQuery (Dijit)表单元素
EN

Stack Overflow用户
提问于 2011-01-11 08:23:50
回答 3查看 1.2K关注 0票数 1

Dojo似乎有一个很有用的特性,它可以在将Dijit.form元素插入DOM时为其设置事件处理程序和默认选项等。

例如,Dojo:var slider = new dijit.form.HorizontalSlider({ name: sliderContainerId+'_slider', value: sliderValue, minimum: sliderMax, maximum: sliderMin,

代码语言:javascript
复制
         `onChange: function(value){    // some event handling  logic              }         }, sliderContainerId);` 

但是,jQuery UI滑块传统上应用于已经存在的DOM元素:

$( sliderContainerId ).slider({ value:100, min: 0, max: 500, step: 50, slide: function( event, ui ) { $( "#amount" ).val( "$" + ui.value ); } });

我需要能够“以编程方式”创建新的Slider(和其他表单元素),但我不确定如何使用jQuery的结构方式来实现这一点?也许我在这里漏掉了一些明显的东西...

MTIA

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-09 03:35:52

jQuery绝对可以让你动态创建新元素。$("<div>").appendTo(".wrapper")将创建一个新的div元素,并将其添加到具有id包装器的元素中。在一个更大的示例中:

代码语言:javascript
复制
$("<div>").appendTo('.wrapper').slider({
    value:100, min: 0, max: 500, step: 50,
    slide: function( event, ui ) { $( "#amount" ).val( "$" + ui.value ); }
});
票数 1
EN

Stack Overflow用户

发布于 2011-01-11 08:48:26

JQuery有一个类似的事件注册。

这样做的方法是使用

代码语言:javascript
复制
$('.class').live(eventname, eventhandler);

任何被插入到dom中的共享相同"class“的元素都将自动地将其事件挂钩。

使用http://www.jqapi.com进行完整和全面的参考...

票数 2
EN

Stack Overflow用户

发布于 2011-01-11 09:02:50

您说得对,jQueryUI的小部件可以处理DOM中已经存在的元素。

我不相信jQueryUI有你描述的那样的功能。不过,模仿你自己也很容易。加载新内容后,只需将slider函数应用于新html即可。假设您在ready和AJAX回调函数或类似的回调函数中执行此操作,我会将此初始化代码分离到它自己的函数中,您可以从多个地方调用该函数:

代码语言:javascript
复制
$(document).ready(function() {
    initializeSlider("#slider_div");
});

function initializeSlider(selector) {
    $(selector).slider({ 
        value:100, 
        min: 0, 
        max: 500, 
        step: 50, 
        slide: function(event, ui) { 
          $("#amount").val("$" + ui.value); 
        } 
    });         
}  

/* later on, when you insert new content, call initializeSlider again */

$.ajax({
  url: 'ajax/test.html',
  success: function(data) {
      $("body").append(data.content); // append new html to the DOM.
      initializeSlider("#new_slider_element");
  }
});

我从未使用过Dojo,但我认为这就是您正在讨论的场景类型。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4653022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档