gpt4 book ai didi

javascript - 将 $this 传递给函数

转载 作者:行者123 更新时间:2023-11-28 00:33:05 25 4
gpt4 key购买 nike

我试图传递对用户选择的项目的引用(以便可以在其上运行适当的Javascript效果),但它似乎不起作用。最初是这样,但是当我重构代码以使其更易于阅读时,它就停止了。我认为这是我使用的逻辑有问题,任何人都可以告诉我如何纠正它。

新代码 - 不起作用但更易于阅读

$('.timeline-item').click(function() {
expandTimelineDetail( $(this));
});

function expandTimelineDetail($obj) {
// UI effect
$obj = $(this).css("background-color", "#F5F5F5");
setTimeout(function () {
$obj.css("background-color", "#FFFFFF");
}, 250);

// Make timeline item active
$obj.addClass("active-item");
$obj.next().addClass("active-item").css('display', 'block');

// Hide the rest of the timeline items that are not active
$('#timeline > :not(.active-item)').hide();
$('#leftspan').css('visibility', 'visible');
$('.search-container').css('display', 'none');

// Hide relative departure time, show actual departure time
$('.actual-time').css('display', 'inline');
$('.leaving-time').css('display', 'none');
}

旧代码 - 工作正常但难以阅读

$('.timeline-item').click(function() {
var $this = $(this).css("background-color","#F5F5F5");
setTimeout(function() {
$this.css("background-color","#FFFFFF");
}, 250);
$(this).addClass("active-item");
$(this).next().addClass("active-item").css('display','block');
$('#timeline > :not(.active-item)').hide();
$('#leftspan').css('visibility','visible');
$('.search-container').css('display','none');
$('.actual-time').css('display','inline');
$('.leaving-time').css('display','none');
});

最佳答案

您将 $(this) 传递给函数,在该函数中为 $obj 参数分配另一个值。

您可以将 this 绑定(bind)到函数:

expandTimelineDetail.bind(this);

您可以像以前一样访问

或者只是不要重新分配 $obj 变量。

关于javascript - 将 $this 传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28773234/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com