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="{"endpoint":"/hz/inventory/variation?parentRecord=abc","rowId":"abc"}">
<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');
如果出于某种原因您无法更改标记以使全局活动 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.
所以你上面的代码应该是这样的:
$('.a-declarative').trigger('click');
使用风险自负,因为这不是触发事件的非常稳定的方式。
该页面包含多个部分。每个部分都由一个 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="{"endpoint":"/hz/inventory/variation?parentRecord=abc","rowId":"abc"}">
<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');
如果出于某种原因您无法更改标记以使全局活动 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.
所以你上面的代码应该是这样的:
$('.a-declarative').trigger('click');
使用风险自负,因为这不是触发事件的非常稳定的方式。