将 OnClick 事件添加到大型 HTML 表中的输入元素会导致页面呈现缓慢.如何提高性能
adding onclick event to input element in large html table causes the page to render slow. how to improve the performace?
将onclick事件添加到大型HTML表格(大约2000行)中的输入元素(type=image)会导致页面呈现缓慢(在IE 9中)。 输入元素每行显示一次。 如果我删除 onclick,它会快速渲染。 OnClick 调用 JavaScript 函数。 有没有另一种方法来附加不会减慢渲染速度的事件? javascrpt 函数位于包含在 head 中的.js文件中,它对其他页面进行 AJAX 调用以加载div 并将其显示为弹出对话框(jquery-ui 对话框)。
<table class="tables_wrapper" style="width: 1450px; table-layout:fixed">
<colgroup>
<col style="width: 150px; word-wrap:break-word; word-break: break-all; " />
<col style="width: 150px; word-wrap:break-word; word-break: break-all; " />
<col style="width: 150px; word-wrap:break-word; word-break: break-all; " />
<col style="width: 150px; word-wrap:break-word; word-break: break-all; " />
<col style="width: 150px; word-wrap:break-word; word-break: break-all; " />
<col style="width: 30px; word-wrap:break-word; word-break: break-all; " />
<col style="width: 30px; word-wrap:break-word; word-break: break-all; " />
<col style="width: 30px; word-wrap:break-word; word-break: break-all; " />
<col style="width: 100px; word-wrap:break-word; word-break: break-all; " />
<col style="width: 150px; word-wrap:break-word; word-break: break-all; " />
<col style="width: 30px; word-wrap:break-word; word-break: break-all; " />
<col style="width: 30px; word-wrap:break-word; word-break: break-all; " />
<col style="width: 100px; word-wrap:break-word; word-break: break-all; " />
<col style="width: 100px; word-wrap:break-word; word-break: break-all; " />
<col style="width: 100px; word-wrap:break-word; word-break: break-all; " />
</colgroup>
<asp:Repeater runat="server" EnableViewState="false" ID="repeater1">
<ItemTemplate>
<tr>
<td><%# ((User)Container.DataItem).Name%></td>
<td><%# ((User)Container.DataItem).Name1%></td>
<td><%# ((User)Container.DataItem).Name2%></td>
<td><%# ((User)Container.DataItem).Name3%></td>
<td><%# ((User)Container.DataItem).Name4%></td>
<td><%# ((User)Container.DataItem).Name5%></td>
<td><%# ((User)Container.DataItem).Name6%></td>
<td><input type="image" src="images/tick.png" alt="" onclick='ShowName("<%# ((User)Container.DataItem).Name7 %>", this); return false;' /></td>
<td><%# ((User)Container.DataItem).Name8%></td>
<td><%# ((User)Container.DataItem).Name9%></td>
<td><%# ((User)Container.DataItem).Name10%></td>
<td><%# ((User)Container.DataItem).Name11%></td>
<td><%# ((User)Container.DataItem).Name12%></td>
<td><%# ((User)Container.DataItem).Name13%></td>
<td><%# ((User)Container.DataItem).Name14%></td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
使用事件委托,在这种情况下,这意味着向整个表添加一个click
事件处理程序,并检查事件源自的元素以决定要执行的操作。
例如:
yourTable.onclick = function(e) {
e = e || window.event;
var target = e.target || e.srcElement;
if (target.nodeName.toLowerCase() == "input" && target.type == "image") {
alert("Image input clicked");
}
};
演示:http://jsfiddle.net/timdown/s5bDL/
添加一个事件处理程序;
.js
function handle(e){
var img=e.target||window.event.srcElement;
img.type!='image'||alert(img.src);
//img.type!='image'||(YOURJQUERYFUNCTION())
}
document.getElementsByTagName('table')[0].onclick=handle;
.html
<table>
<tr><td><input type="image" src="http://placekitten.com/50/50"></td><td>a2</td></tr>
<tr><td><input type="image" src="http://placekitten.com/50/50"></td><td>b2</td></tr>
</table>
例
http://jsfiddle.net/rE9zd/
相关文章:
- “createImageData()”和“new ImageData(()”有何不同
- 如何访问提供给Jade模板的所有选项
- 如何将javascript变量作为参数提供给asp.net方法
- 如何打开一个新窗口或选项卡,并将其提供给javascript执行
- Javascript图形可视化工具包,具有高性能(500-1000个节点)
- 用PHP读取另一个网站的源代码,并将其作为字符串提供给JavaScript
- 如果($_SERVER[“REQUEST_METHOD”]=“POST”)条件在ajax调用不同的php文件进行验证和提
- Javascript尽管ID不同,但只有第一个按钮提交给Ajax表单
- Node.js上的高性能算法
- 在 Web 应用中处理事件跟踪的最佳(高性能)方法
- 这与 $(document).ready() 有何不同
- 反应错误“失败的 propType:提供给”提供者“的无效道具'子项',需要单个 ReactElement'
- js.erb文件中提供给RegExp构造函数的标志无效
- 将$scope对象作为参数提供给$digest中的观察者背后的逻辑
- 什么'这就是GSAP高性能动画的秘密
- XUL文档与HTML文档对象有何不同
- Javascript对象:这两个值有何不同
- 什么是声明性环境记录,它与激活对象有何不同
- 如何创建高性能选择器[请不要jquery]
- 响应式 Web 开发与渐进式 Web 开发有何不同