JQuery 展开页面的所有可折叠部分(来自外部网站)

JQuery to expand all collapsible sections of a page (from external website)

该页面包含多个部分。每个部分都由一个 TD 块表示(请参见下面的代码),实际页面将显示一个“>”图标(将鼠标悬停在它上面会显示 a href:javascript:void(0)),当手动单击时,它会通过从 SPAN 块调用端点 POST 来扩展该部分。

<td id="abc-parent" data-column="parent" data-row="abc" class="mt-cell mt-center">
<a href="javascript:void(0)">
    <span class="a-declarative" data-action="myitable-fetch-rows" data-myitable-fetch-rows="{&quot;endpoint&quot;:&quot;/hz/inventory/variation?parentRecord=abc&quot;,&quot;rowId&quot;:&quot;abc&quot;}">
        <div class="mt-variation-icon mt-variation-expand"/>
    </span>
</a></td>

我想创建一个包含一行 JQuery 的小书签。调用时,它会展开页面的所有可折叠部分。

我的意思是这样的(注意这并没有实现我上面描述的):

javascript:jQuery('.a-declarative').each(function(i,e){e.click()})

为所有可扩展区域创建一个全局class .active(确保它们都有,即使你必须在另一个class="another active"之后添加它)

保证.active是展开状态。然后像下面这样调用它。

$('.item').toggleClass('active');

Simple jsfiddle demo of this.


如果出于某种原因您无法更改标记以使全局活动 class,您可能必须使用所有 'expanded selectors' 来调用它(但应该没有理由这个)

$('.item').toggleClass('active expanded open');

寻求bookmarklet方面的帮助;这是一个很酷的 link 应该可以帮助你;但你应该做的就是在函数中定义上面的内容,然后用 .click() 事件触发。


更新! 我刚刚通过下面的评论部分发送了另一个指针;但您知道您可以通过 jQuery 添加 class .active 到共享相同 class 或 ID 的所有切换。但是您仍然需要研究如何在此外部网站上构建切换开关,以便将展开状态与新的 .active 状态结合起来。由于您没有 post 该代码,因此无法使用知道这一点;但它通常很容易在 .css 中找到。

$('td').find('.mt-center').addClass('active');

我认为您正在寻找“触发器”功能:

.trigger( eventType [, extraParameters ] ) Description: Execute all handlers and behaviors attached to the matched elements for the given event type.

https://api.jquery.com/trigger/

所以你上面的代码应该是这样的:

$('.a-declarative').trigger('click');

使用风险自负,因为这不是触发事件的非常稳定的方式。