- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
I don't know if this is the effects of an update panel或者什么,但我基本上有一个下拉列表,允许用户选择一个项目作为过滤器。选择项目后,它应该只将一个项目带回 GridView 。也就是说,这个特定的过滤器最多会带回您要查找的记录。如果用户单击“应用”链接来应用过滤器,这会很好地工作。应用链接后面是一些服务器端代码(ASP.NET Web 窗体应用程序中的 C#)。
我们收到了一位用户的请求,结果是:
"Why do I have to click the apply button if I make a selection in this one drop down filter...it should simply get that one record I am searching for. This helps me because I don't have to click the "Apply" button."
我同意他的看法,并认为最简单的方法是什么...我想:简单,我将有一个下拉菜单的更改事件处理程序,以便在进行选择时触发点击事件。一些这样的效果:
$("#MainContent_ddlCompany").on("change", function() {
var companyId = $("#MainContent_ddlCompany").val();
$("#MainContent_hdnCompanyValue").val(companyId);
$("#<%=ddlCompany.ClientID %>").trigger("chosen:updated");
if (companyId.length > 0) {
$(".apply").click();
$(".apply").removeClass("applyButton");
$(".apply").addClass("resetButton");
} else {
//cleared selection of a company
$(".apply").removeClass("resetButton");
$(".apply").addClass("applyButton");
}
});
一开始这行不通,我也不知道为什么,但经过认真的谷歌搜索后,我更改了这一行:
$(".apply").click();
对此:
$('.apply')[0].click();
效果很好...所以我决定再测试一下。当我不断选择一个又一个过滤器值时,我注意到页面开始变慢。事实上,到第 6 次或第 7 次时,它已经无法使用了。我不知道为什么会这样,但我再次怀疑这与类名称为 .apply 的链接按钮位于更新面板内这一事实有关。
但我仍然心想,在我更改 jQuery 代码以模拟点击事件之前,它位于更新面板内。那么,为什么页面会因这一小段代码而变慢并拖拽呢?从 jQuery 代码调用事件是否在 HTML 中呈现可能导致此问题的其他内容?
如果我改回我的代码并强制用户单击“应用”按钮,那么我们就会恢复到良好的正常速度。为什么如果我告诉 jQuery 模拟单击按钮我的页面会变慢?它在做同样的事情,无论是用户点击它还是我让 jQuery 点击它,模拟这个链接按钮的点击都是调用它的服务器端代码方法。
现在我不知道为什么会发生这种情况,因为无论哪种情况,这个按钮都在更新面板中,但是当我通过 $('.apply')[0] 使用 jQuery 单击它时.click();
多次尝试后页面变慢。然而,当我让用户只需单击此按钮(没有 jQuery 单击事件)时,它就可以正常工作了吗?
我在这里错过了什么?
最佳答案
呃,好吧,我发现了我的问题。因为我使用的是更新面板,所以我必须包装我的 jQuery 代码以包含 add_endRequest
。也就是说,您有以下效果:
$(document).ready(function() {
//Some initial event/triggers
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_endRequest(function () {
//Copy of some initial event/triggers
});
});
您问我为什么要使用 endRequest?好吧,因为更新面板基本上会在异步回发后丢弃所有事件,因为此时(更新后)的 HTML 会再次呈现,并且此时与更新面板内的任何控件关联的所有事件都将被删除。当然此时 document.ready()
没有运行,所以我必须在 endRequest
中重新订阅这些事件。输入我的问题...
我脑袋放了一个大屁,我基本上把所有东西都拿走了,实际上是准备好文档中的所有东西,并将其复制到 endRequest
中。事实上,如果我没记错的话,我读过的文章是这样说的
Whatever you have in document ready simply copy paste into endRequest
没关系,但你必须要小心。我将未包含在更新面板内部的事件放入 endRequest
中。结果是灾难性的……至少对我来说是这样。
这些事件将被附加多次......或者基于异步回发的数量。就我而言,正如我在测试时提到的,在第 6 次或第 7 次性能开始下降后。好吧,到那时我的控件已多次附加到事件上。例如,我的 .apply
按钮和我的 dropdownlist
都在我的 updatepanel
之外。但是我的 jQuery 代码在 document ready
和 endRequest
中附加了我的 dropdownlist
的更改事件。
结果最初是非常快的,因为它只在文档就绪
中。但是当我进行异步回发时,每次都会附加这些事件。对于 n 个测试,我将有 n 个附加事件......在我的例子中,7 个测试在更改事件处理程序上产生 7 个!
例如,不要为不在更新面板内的任何控件放置任何事件处理程序,例如 jQuery 的 on()
事件。否则你会遇到我遇到的情况,即在事件发生时表现不佳。
关于javascript - 为什么告诉 jQuery 单击我的链接按钮会减慢我的页面速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31572986/
我在想出一个算法时遇到了麻烦... 我有一系列 GPS 数据,以 1 秒为间隔记录时间、速度、距离。假设距离是米,速度是米/秒。可能有超过 2 小时的数据,或 7200 个点。这里的“时间”字段主要是
使用java排序器,即: Collections.sort(myArrayList, new Comparator() { @Override public int c
有什么区别吗 SELECT * FROM my_table 和 SELECT my_column_id FROM my_table 地点: my_table 有百万行 网站上有大量并发用户进行sql查
有2个样本。 在第一个示例中,使用 orderby 可以更快地获得结果。 (根据 phpmyadmin 速度报告) 在另一个例子中,我没有使用 order by,它给出的结果较慢。 (根据 phpmy
我注意到,如果我将训练数据加载到内存中并将其作为 numpy 数组提供到图中,与使用相同大小的 shuffle 批次相比,速度会有很大差异,我的数据有大约 1000 个实例。 使用内存 1000 次迭
我在 python 中使用破折号。我正在绘制记录到 SQLite 数据库中的实时数据,目前,我正在绘制单个值与时间线图。我计划再添加 20 个图表,但目前,随着时间的增加, plotly 变慢,我认为
我试图调用 hasNext Velocity 模板中的方法,以便根据 foreach 循环中的位置影响行为 - 仅 hasNext没有按照文档工作。 这是 Velocity 用户指南的片段,关于 ha
在我正在制作的游戏中,我有两个点,pt1 和 pt2,我想计算出它们之间的角度。我已经在较早的计算中计算出距离。显而易见的方法是对垂直距离上的水平距离进行反正切 (tan(theta) = opp/a
我经常遇到字符串值不存在和/或为空的情况。这是测试这种情况的最佳方法吗? #if( $incentive.disclaimer && $!incentive.disclaimer != '' )
我想将一个模板nested包含在其他模板cont1,cont2和cont3中。 并且嵌套模板应仅对cont1隐藏一个特定控件。 在包含在cont1中之前,我想为一些标志变量$hideMyControl
是否可以更改从“Windows Azure Media Encoder”输出的音频的播放速度? 我正在使用配置为“WMA High Quality Audio”的“Windows Azure Medi
我使用速度将String(template)与字段合并 hi there I'am ${name}, And I'am ${age} old. velocity将字段${name}和${age}与一种
我使用的是 LockedBitmap 类,它简化了 C# 中位图数据的处理。目前它正在将数据复制到本地 byte[] 数组中,然后通过其类方法访问该数组以获取/设置像素颜色值。 这比直接通过指针访问锁
我尝试在 VM_global_library.vm 文件中添加一堆 #set($x=abc) 语句,但这些变量在我的 VM 模板中不可用。 我想为图像的基本路径等设置一个全局变量。这可能吗? 最佳答案
我的项目结构: -src --main ---java ----makers -----SomeClass ---resources ----htmlPattern.vm 如何告诉 SomeClass
我正在尝试从 Velocity 中的字符串中删除不需要的字符(换行符可以,但不能像 EM 和 CAN ASCII 控制字符那样)。 #set($cleanScreen = $cleanScreen.r
我想在日.月.年之间的点处分割日期。例如:2015 年 1 月 14 日至 {14, 01, 2015}这是我使用的代码:dates3.get(0) 包含我从页面的文本字段获取的字符串“14.01.2
之后,从 1.5 升级到速度引擎 1.7 出现了 1.5 没有的问题。为了解释这个问题,我必须展示一个代码片段: #foreach($someVariable in $someCollection)
我想知道从表中选择所有字段是否更快: SELECT * 或只选择您真正需要的: SELECT field1, field2, field3, field4, field5... 假设表有大约 10 个
我正在尝试模仿照片应用程序的行为,在该应用程序中,用户用手指平移照片并且照片具有一定的速度。由于我不会深入的原因,我不能将 UIScrollView 与它的缩放 UIImageView 一起使用,而是
我是一名优秀的程序员,十分优秀!