阅读另一个关于jQuery性能的StackOverflow问题,我开始思考什么时候值得使用事件委托(delegate)而不是单独绑定(bind)到元素。我主要考虑的是jQuery,但我认为它可能适用于一般的Javascript。事件委托(delegate)有两个主要目的:允许处理程序处理尚未创建/插入到DOM中的元素。将一个函数绑定(bind)到一个共同的祖先元素而不是绑定(bind)到多个兄弟元素我的问题是关于其中的第二个。一般的答案可能是“这取决于具体情况”,但我想知道是否有经验法则或基准测试方法来对此进行测试。因此,问题是:在事件委托(delegate)的性能优势超过性能成本之前
在vanillajs中进行事件委托(delegate)的最佳(最快/正确)方式是什么?例如,如果我在jQuery中有这个:$('#main').on('click','.focused',function(){settingsPanel();});我怎样才能将它翻译成vanillajs?也许用.addEventListener()我能想到的方法是:document.getElementById('main').addEventListener('click',dothis);functiondothis(){//nowinjQuery$(this).children().each(fu
在Viewremove()方法中调用undelegateEvents()是一种不好的做法吗?为什么Backbone人员默认不包含它?我意识到我在简单地重新初始化View变量时遇到了很多绑定(bind)问题。虽然在创建新View时会自动调用undelegateEvents(),但它会尝试取消委托(delegate)新实例化View的事件,而不是前一个View。因此,除非每次都手动调用它,否则幽灵事件回调仍然存在并搞砸了我的应用程序。处理此问题的最佳方法是什么? 最佳答案 Isitabadpracticetocallundelegate
我正在尝试在用DataTables.Net插件包装的网格上使用委托(delegate)方法。我最初有这段代码,它按预期工作。$("#myGridtbodytr").click(function(){varid=$(this).children('td').eq(0).text();alert(id);});但是,如果我更改分页大小,则较新的行没有调用该函数的点击事件。我决定新的JQuery委托(delegate)方法应该完全符合我的要求;但是,它对任何tr元素什么都不做。谁能解释为什么这不起作用:$('#myGridtbody').delegate('tr','click',funct
动态创建的dom元素上的事件委托(delegate)的native实现是什么?我尝试查看jQuery源代码,但无法遵循.on方法。注意:目前,我在创建dom元素后附加事件处理程序,这看起来很标准,但我喜欢jQuery.on使用此语法处理动态创建的元素事件的方式$(文档).on("click",".selector",handler);. 最佳答案 基本上是这样的://$(document).on("click",,handler)document.addEventListener("click",function(e){for(va
与我一起工作的一位开发人员开始以这种方式编写他的所有代码:$('.toggles').delegate('input','click',function(){//dosomething});对比:$('.toggles').click(function(){//dosomething});这样做有什么性能优势吗? 最佳答案 delegate()从jQuery1.7开始被取代。改用.on()。.on()具有出色的性能基准。并涵盖您的.click()需求和需要 关于javascript-明智
我正在用ng2开发一个应用程序,但遇到了一些问题。我正在构建一个日历,您可以在其中选择一个日期范围,我需要对日期单元格上的click和mouseenter/mouseleave事件使用react。所以我有一个这样的代码(简化):calendar.component.html但这让我在浏览器的内存中有数百个单独的事件监听器(每天的单元格有3个事件监听器,我一次最多可以显示12个月,所以它会超过1000个监听器)。所以我想以“正确的方式”来做,使用称为“事件委托(delegate)”的方法。我的意思是,在父组件(month)上附加一个点击事件,当它收到一个点击事件时,只需检查它是否发生在D
http://jsfiddle.net/walkerneo/QqkkA/我在这里看到了很多关于在javascript中使用事件委托(delegate)询问或回答的问题,但是我还没有看到如何对不会成为目标的元素使用事件委托(delegate)点击事件。例如:HTML:CSS:ul{padding:20px;}li{margin-left:30px;margin-bottom:10px;border:1pxsolidblack;}.d{padding:10px;background:gray;}如果我想添加一个点击事件来处理li元素被点击时怎么办?如果我将事件处理程序附加到ul元素,d
我们都知道这样做是不好的:ItemItem...500morelistitems然后……$("ulli").bind("click",function(){...});我一直在查看大量的Backbone示例/指南,以下似乎是基于模型集合呈现包含项目的列表的标准方法。varListView=Backbone.View.extend(){tagName:'ul',render:function(){this.collection.each(function(item){varview=newListItemView({model:item});$(this.el).append(view.
我正在使用Netbeans,我喜欢它。但是,我的场景是,当我想在对象A中使用对象B时,我无法在$this->B->上使用自动完成功能(是的,我知道,下面的代码有语法错误,问题不是语法)。所以,例如:require_once('Legion.class.php');classMyClass{private$Legion;publicfunction__construct(){$this->Legion=Legion::getInstance();}publicfunctionshowResult(){$this->Legion->//Notworkshere$Legion=$this->