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

我正在使用以下一些JQuery方法,并希望将它们转换为纯JavaScript,以提高网页的性能

$(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本身永远不会很快或易读。感谢您的投入。我将处理这些建议。感谢您的指导。现在我将集中精力处理事件委派。