jQuery:通过 .wrap() 添加到 DOM 的 jQuery 元素上的切换类

jQuery: Toggle class on jQuery element that has been added to the DOM via .wrap()?

本文关键字:jQuery 元素 DOM 通过 wrap 添加      更新时间:2023-09-26

我在操作元素的类属性时遇到问题,因为我使用 .wrap() 将其添加到 DOM 中。它根本不会改变属性,即使一切似乎都井井有条。

如果我使用 .wrap() 或 .wrapInner() 以外的其他东西,一切都按预期工作。如果我将 .toggleClass() 更改为 if/else 如果仍然不起作用。

人们当然可以解决它,但我宁愿找到问题的根源并在此过程中学习一些东西。

这是有问题的代码:

$('.tour-category').each(function () {
    var tour_list = $(this);
    var header = tour_list.parent().find('h4');
    var link = $('<a>', {
        href: '#',
        'class': 'tour-category-toggler',
        click: function (e) {
            e.preventDefault();
            tour_list.slideToggle(200);
            link.toggleClass('close');
        }
    });
    tour_list.hide();
    header.wrap(link);
});

也许我错过了什么,或者这可能是jQuery中的一个错误?

尝试更改

link.toggleClass('close');

$(this).toggleClass('close');