Jquery方法到JavaScript
我正在使用以下一些JQuery方法,并希望将它们转换为纯JavaScript,以提高网页的性能Jquery方法到JavaScript,javascript,jquery,html,Javascript,Jquery,Html,我正在使用以下一些JQuery方法,并希望将它们转换为纯JavaScript,以提高网页的性能 $(function() { $('#resultDetails').on('click', '.toggle', function() { var findChildren = function(tr) { var depth = tr.data('depth'); return tr.nextUntil($('tr').fil
$(function() {
$('#resultDetails').on('click', '.toggle', function() {
var findChildren = function(tr) {
var depth = tr.data('depth');
return tr.nextUntil($('tr').filter(function() {
return $(this).data('depth') <= depth;
}));
};
var el = $(this);
var tr = el.closest('tr');
var children = findChildren(tr);
var subnodes = children.filter('.expand');
subnodes.each(function() {
var subnode = $(this);
var subnodeChildren = findChildren(subnode);
children = children.not(subnodeChildren);
});
if(tr.hasClass('collapse')) {
tr.removeClass('collapse').addClass('expand');
children.hide();
} else {
tr.removeClass('expand').addClass('collapse');
children.show();
}
return children;
});
});
$(document).ready(function() {
$('table tr').on('click', function() {
$('#showContent').html($(this).find('.content').html());
});
$('table th').on('click', function() {
$('#showContent').html($(this).find('.content').html());
});
$('#resultDetails tbody tr').on('click', function(event) {
$(this).addClass('highlight').siblings().removeClass('highlight');
});
});
$(函数(){
$('resultDetails')。在('click','.toggle',function()上{
var findChildren=函数(tr){
var深度=tr数据(“深度”);
返回tr.nextUntil($('tr').filter(函数(){
返回$(this.data('depth'))您的问题不是来自jquery,我建议您不要花一秒钟的时间在Javascript bc中重新编写代码。这将花费您很长时间,而且您最终会发现一个代码有数千行,您以后无法更新。我的解决方案是重新考虑如何尽可能减少Ta上的事件例如,您可以使用toggleClass()代替removeClass('expand')。addClass('collapse'))etc etc您可能不会看到将其转换为纯javascript的巨大差异。我相信选择器等常见JQuery函数已经得到了很好的优化。您不太可能比他们提供的经验水平更好地重新编写它
我建议您使用时间来查看无限网格或分页解决方案,这样您就不会一次处理那么多DOM元素。也不要为表单击事件创建匿名函数,因为这样,当每个元素都执行完全相同的操作时,它将为每个元素创建一个新函数e:
var clickFunction=函数(事件){…};
$('table tr')。在('click',clickFunction);
希望有帮助。这不是一项编码服务。您自己尝试了什么?您遇到了什么问题?您的具体问题是什么?您的问题不是来自jquery,而是来自您的表,可以获得2000多行。使用某种分页,然后问题就解决了……顺便说一句,您应该考虑委派事件,而不是创建一个每个元素的处理程序。-1表示不可读的代码。我在这里和工作中尝试过不可读的代码…@Virus721为您修复了它。是不是好多了?我同意,findChildren函数看起来也像$(tr)的某个坏变体。find('*')).重新实现jquery本身永远不会很快或易读。感谢您的投入。我将处理这些建议。感谢您的指导。现在我将集中精力处理事件委派。