【问题标题】:How do I trigger a BulletedList in LinkButton-mode with javascript?如何使用 javascript 在 LinkBut​​ton 模式下触发 BulletedList?
【发布时间】:2008-10-08 13:00:35
【问题描述】:

我在 asp.net 中有一个 BulletedList,它设置为 DisplayMode="LinkBut​​ton"。我想从 javascript 触发第一个“子弹”,可以这样做吗?如果有,怎么做?

【问题讨论】:

    标签: c# asp.net javascript bulletedlist


    【解决方案1】:

    假设你有 BulletedList

    <asp:BulletedList runat="server" ID="MyLovelyBulletedList" DisplayMode="LinkButton">
        <asp:ListItem Text="My Lovely Text 1" />
        <asp:ListItem Text="My Lovely Text 2" />
    </asp:BulletedList>
    

    ...然后您可以像这样触发“onclick”事件(跨浏览器):

    var links = document.getElementById('<%= MyLovelyBulletedList.ClientID %>').getElementsByTagName('a');
    
    var targetLink = links[0];
    
    if (targetLink.fireEvent)
    {
        // IE
        targetLink.fireEvent("onclick");
    }
    else if (targetLink.dispatchEvent)
    {
        // W3C
        var evt = document.createEvent("MouseEvents");
    
        evt.initMouseEvent("click", true, true, window,
            0, 0, 0, 0, 0, false, false, false, false, 0, null);
    
        targetLink.dispatchEvent(evt);
    }
    

    【讨论】:

    • targetLink.fireEvent("onclick");行似乎不起作用。使用 alert 我可以看到 targetLink 是正确的链接,但它不会触发。
    • 相当奇怪 - 我会尝试再次运行它。附带说明一下,如果您只想进行回发,可以调用 __doPostBack ('', 0);
    • 遗憾的是这对我不起作用。出于某种原因,它只是“触发”页面上的第一个超链接。
    • 此解决方案适用于 Opera 和 Google Chrome,但不适用于 Firefox 和 Internet Explorer。
    【解决方案2】:

    与 Alexander 指出的类似,只是您可以使用 jQuery 来触发事件并依赖它们的跨浏览器支持,而不是自己维护它。

    $('#<%= MyLovelyBulletedList.ClientID %>')
        .contents()
        .find('a:first')
        .trigger('click');
    

    【讨论】:

    • 那也是 :) 用 jQuery 看起来真是太棒了!我想我们很快就会在世界各地建造约翰·雷西格教堂......
    • and... 它可以写成 $('# > a:first').trigger('click');
    • 我们现在还没有使用 jQuery,但该死的看起来很流畅 :)
    【解决方案3】:

    经过大量测试,似乎唯一的依赖方法是手动触发 __doPostBack 脚本,如下所示:

    __doPostBack('MyLovelyBulletedList', '0');
    

    按照Alexander Gyoshev的建议

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-26
      • 1970-01-01
      • 1970-01-01
      • 2021-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多