- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在寻找一种更好的方法来管理大型项目中的全局组件/插件/小部件初始化。它有许多 jQuery 支持的组件,我想快速高效地初始化这些组件,在搜索互联网之后,我只真正找到了一些短视的例子,这些例子只在较小的网站上是现实的/高性能的。
我想找到一种聪明而优雅的方法来摆脱它:
$(function() { $('.widget-one').widgetOne(); });
$(function() { $('.widget-two').widgetTwo(); });
$(function() { $('.widget-three').widgetThree(); });
$(function() { $('.widget-four').widgetFour(); });
现在,在你责备我之前,让我声明,我知道在大多数情况下(但不是全部).widget-one
是一个糟糕的选择器,因为它在旧浏览器上会获取所有元素在 dom 中检查类(class)。
问题是,这些小部件不是一次性的,我可能无法提前知道它们的存在(在 Web 应用程序 View 中生成,基于逻辑或产品循环或其他东西可能有 2-3 次) .
于是就有了下面的解决方案:
$(function() { $('#WidgetOne').widgetOne(); });
和
<span id="WidgetOne_12345">...</span>
<script type="javascript">
$(function() { $('#WidgetOne_12345').widgetOne(); });
</script>
这不是一个新问题,从第一天开始就存在了。仍然让我感到困惑的是,即使在这种成熟度下,用 jQuery 解决这个问题也是如此困难。要么,要么我遗漏了一些明显的东西。
不幸的是,google-fu 在这个问题上的结果很糟糕,因为每个人都建议以下两种方法之一:
.live()
或 .delegate()
包罗万象的事件处理程序。这在基本层面上是可怕的。 .delegate()
不会那么糟糕,但这需要插件/widget/control/whatever 完全是事件驱动的。这肯定会在很多情况下起作用,但在其他情况下却行不通。它还使跟踪和组织代码变得非常复杂。我什至不会进入 .live()
,对于大型复杂站点,事件冒泡很慢,当您将足够多的组件放在一起时,要匹配的查询列表会变大,每次点击/聚焦/whatever 事件在整个页面上逐渐变慢。必须有更好的方法,我知道必须有一个。我已经用尽了关于这个主题的 google fu,但仍然找不到比 jQuery 1.3.2 更新的想法/概念/示例/讨论,也找不到宏伟的蓝图。在一个完美的世界中,这不会是一个问题,因为每个人都会使用具有现代标准的智能浏览器和一个像样的 javascript 引擎,并且 .class
查询不会花费亿万年,但不幸的是,这不是情况。
我正在寻找关于如何解决这个问题的想法,在经历了许多与此类似的 SO 问题以及许多关于各种 jquery 技术的文章之后,我觉得如果信息在那里,它就会被许多误报和“101 个最佳 jQuery 插件”结果出现在任何使用 jQuery 的搜索中。我知道有人遇到过这种困境。
想法、链接、示例,任何东西都是受欢迎的,只是必须有更好的方法。
最佳答案
只是头脑 Storm ,我可以想到一件事可以减少您的“选择和初始化”时间,但可能是开发过程中痛苦的权衡。此外,您不能真正将 params 与此方法一起使用,但如果您遇到的情况与您上面描述的情况完全相同,那么这可能是值得的。
如果您坚持每个初始化元素都具有相同的类(例如小部件),则可以创建一个初始化小部件的选择器系统。
在您的 HTML 中构造类而不是像这样:
<div class="widget" widgetFunc="widgetOne"></div>
<div class="widget" widgetFunc="widgetTwo"></div>
等等
您的 jquery init 函数将如下所示:
var $widgetInitializerElements = $('.widget');
$.each($widgetInitializerElements,function(){
var initialize = window[$(this).attr('widgetFunc')];
if(typeof initialize === 'function'){
$(this).initialize();
}
});
因此这会将您的选择减少到一次,并使您的 jquery 非常干净。你只需要担心所有那些可能不可行的 HTML 元素,如果你需要添加参数来初始化调用,你会遇到麻烦:/
关于javascript - jQuery,寻找一种更智能的初始化方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8347219/
我是 Spring 新手,这就是我想要做的事情: 我正在使用一个基于 Maven 的库,它有自己的 Spring 上下文和 Autowiring 字段。 它的bean配置文件是src/test/res
我在我的测试脚本中有以下列表初始化: newSequenceCore=["ls", "ns", "*", "cm", "*", "ov", "ov", "ov", "ov", "kd"] (代表要在控
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: Class construction with initial values 当我查看 http://en.
我得到了成员变量“objectCount”的限定错误。编译器还返回“ISO C++ 禁止非常量静态成员的类内初始化”。这是主类: #include #include "Tree.h" using n
我有如下所示的a.h class A { public: void doSomething()=0; }; 然后我有如下所示的b.h #include "a.h" class b: publi
我需要解析 Firebase DataSnapshot (一个 JSON 对象)转换成一个数据类,其属性包括 enum 和 list。所以我更喜欢通过传递 DataSnapshot 来手动解析它进入二
我使用 JQuery 一段时间了,我总是使用以下代码来初始化我的 javascript: $(document).ready( function() { // Initalisation logic
这里是 Objective-C 菜鸟。 为什么会这样: NSString *myString = [NSString alloc]; [myString initWithFormat:@"%f", s
我无法让核心数据支持的 NSArrayController 在我的代码中正常工作。下面是我的代码: pageArrayController = [[NSArrayController alloc] i
我对这一切都很陌生,并且无法将其安装到我的后端代码中。它去哪里?在我的页脚下面有我所有的 JS? 比如,这是什么意思: Popup initialization code should be exec
这可能是一个简单的问题,但是嘿,我是初学者。 所以我创建了一个程序来计算一些东西,它目前正在控制台中运行。我决定向其中添加一个用户界面,因此我使用 NetBeans IDE 中的内置功能创建了一个 J
我有 2 个 Controller ,TEST1Controller 和 TEST2Controller 在TEST2Controller中,我有一个initialize()函数设置属性值。 如果我尝
据我所知, dependentObservable 在声明时会进行计算。但如果某些值尚不存在怎么办? 例如: var viewModel ={}; var dependentObservable1 =
我正在阅读 POODR 这本书,它使用旧语法进行默认值初始化。我想用新语法实现相同的功能。 class Gear attr_reader :chainring, :cog, :wheel de
我按照 polymer 教程的说明进行操作: https://www.polymer-project.org/3.0/start/install-3-0 (我跳过了可选部分) 但是,在我执行命令“po
很抱歉问到一个非常新手的Kotlin问题,但是我正在努力理解与构造函数和初始化有关的一些东西。 我有这个类和构造函数: class TestCaseBuilder constructor(
假设我们有一个包含 30 列和 30 行的网格。 生命游戏规则简而言之: 一个小区有八个相邻小区 当一个细胞拥有三个存活的相邻细胞时,该细胞就会存活 如果一个细胞恰好有两个或三个活的相邻细胞,那么它就
我是 MQTT 和 Android 开放附件“AOA” 的新手。在阅读教程时,我意识到,在尝试写入 ByteArrayOutputStream 类型的变量之前,应该写入 0 或 0x00首先到该变量。
我有 2 个 Controller ,TEST1Controller 和 TEST2Controller 在TEST2Controller中,我有一个initialize()函数设置属性值。 如果我尝
我有一个inotify /内核问题。我正在使用“inotify” Python项目进行观察,但是,我的问题仍然是固有的关于inotify内核实现的核心。 Python inotify项目处理递归ino
我是一名优秀的程序员,十分优秀!