如何以编程方式单击jQuery导航手风琴中的项目

时间:2012-08-24 22:50:27

标签: jquery jquery-ui asp.net-mvc-4

我花了我的时间在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);

但是我需要将它提升到一个新的水平并“点击”该项目,然后导致浏览器导航。

谢谢你, 斯蒂芬

2 个答案:

答案 0 :(得分:0)

未经测试的代码:

$("#messagesNavItems a[href$='Outbox']").click();

答案 1 :(得分: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();
        });
    });    
});