0

我已经花了我分配的时间来寻找关于 SO 的答案,所以就这样吧。鉴于此代码在 js 中创建导航手风琴

$("#accordion").accordion({
    fillSpace: true,
    collapsible: false,
    navigation: true
});

在我看来,这是为了填充它(为了清楚起见,大部分都被删除了)

 <h2>
    <a href="#">Messages</a></h2>
<ul class="menulist" id="messagesNavItems">
    @Html.MenuItem("Messaging", "InterOffice", "Message", "selected")
    @Html.MenuItem("Outbox", "Outbox", "Message", "selected")
    @Html.MenuItem("Inbox", "Inbox", "Message", "selected")
</ul>

呈现

<ul id="messagesNavItems" class="bunch of classes" role="tabpanel">
    <li>
        <a href="/Buyer/Message/InterOffice">Messaging</a>
    </li>
    <li>
        <a href="/Buyer/Message/Inbox">Inbox</a>
    <li>
    <li>
        <a href="/Buyer/Message/Outbox">Outbox</a>
    <li>
</ul>

如何模拟从页面的其他部分点击到发件箱?

我可以让“标题”弹出

var accordionindex = 5; /*Messages*/
$("#accordion").accordion('activate', accordionindex);

但我需要将其提升到下一个级别并“单击”该项目,然后该项目将导致浏览器导航。

谢谢你,斯蒂芬

4

2 回答 2

0

未经测试的代码:

$("#messagesNavItems a[href$='Outbox']").click();
于 2012-08-24T22:55:18.020 回答
0

好吧,我必须在应得的地方给予一些功劳,感谢 kannix,他建议在选择器上使用 click 方法,但在我的情况下,无论出于何种原因,它仍然没有激活链接并导致导航发生。

我最终要做的是首先将点击事件绑定到锚点

    $("#messagesNavItems a[href$='Inbox']").on('click', function() {
        alert('Inbox was clicked');
        window.location.href = $(this).attr("href");
    });

它确实响应了来自 jQuery Accordion 外部的程序化点击。

这是首先设置要打开的右侧面板的所有相关代码,然后单击并点击链接。

$(function () {

    $("#messagesNavItems a[href$='Inbox']").on('click', function() {
        window.location.href = $(this).attr("href");
    });

    $('iframe').load(function () {

        $(this).contents().find("a[href='messages/list.asp?pjid=&box=in&sf=mesibox']").click(function (event) {
            event.preventDefault(); /* the frame link we are clicking shound not navigate */
            var accordionindex = 5; /*Messages*/
            $("#accordion").accordion('activate', accordionindex);
            $("#messagesNavItems a[href$='Inbox']").click();
        });
    });    
});
于 2012-08-27T18:01:34.933 回答