gpt4 book ai didi

javascript - 如何在集合中的项目上触发 jQuery 事件($._data() 与集合的第一个元素产生意外的 jQuery 结果)

转载 作者:行者123 更新时间:2023-12-02 18:11:01 25 4
gpt4 key购买 nike

我正在尝试自动单击表格列的标题,以便表格在页面加载时自动排序。 (该表是由 Confluence 插件注入(inject)的,因此我们无法轻松控制其内容、排序或 CSS。)

每个<th>表中有class="sortableHeader" 。使用 jQuery 获取标题项集:

$('th.sortableHeader')

返回预期的 jQuery 对象数组,如果我这样做的话,获取与数组中第一个项目关联的事件就可以了:

$._data( $('th.sortableHeader')[0], "events")

对象 {mousedown: Array[1], mouseup: Array[1]}鼠标按下:数组[1]mouseup: 数组[1]原型(prototype):对象

当然不能打电话.trigger()在那家伙身上,因为他不是 jQuery 对象。所以我尝试使用 .first() 获得相同的对象(我认为)或.slice(0,1) ,但这就是事情变得奇怪的地方:

$._data( $('th.sortableHeader').first(), "events")

未定义

$._data( $('th.sortableHeader').slice(0,1), "events")

未定义

我本以为最后两个会产生与第一个相同的结果。有人可以解释为什么这些事件没有出现吗? (显然,如果事件没有出现,那么我就无法.trigger()它们!)

最佳答案

// trigger mouseup on all matching elements
$('th.sortableHeader').trigger('mouseup');

// trigger mouseup on first matching element
$('th.sortableHeader').first().trigger('mouseup');

要查找事件(和处理程序),您已经解决了:

$._data( $('th.sortableHeader')[0], "events");

这将返回保存在 jQuery 中的事件对象,但您“不需要”它们来触发它们,jQuery 在 .trigger() 中抽象了该部分。

如果你真的想变得很麻烦,可以尝试这样的事情:

var ev = $._data( $('th.sortableHeader')[0], "events");
// ev is now an object of events
ev.mouseup.forEach(function(obj) {
obj.handler();
});

演示:http://jsfiddle.net/YECr5/

关于javascript - 如何在集合中的项目上触发 jQuery 事件($._data() 与集合的第一个元素产生意外的 jQuery 结果),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19717051/

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