我可以用jQuery代码模拟点击超链接吗

Can I simulate a click on a hyperlink with jQuery code?

本文关键字:超链接 模拟 jQuery 代码 我可以      更新时间:2023-09-26

我看到了几篇Stack Overflow帖子,这些帖子显然与我的问题有关,但似乎都没有达到我的目的。

我有一个嵌套结构来在报告中显示层次结构(业务单位和品牌):

<tr class="BrandRow1">
    <td>
    </td>
</tr>
<tr class='BrandRow1 StoreRow1'>
...
</tr>
<tr class='BrandRow1 StoreRow2'>
...
</tr>

在这个布局中,我使用A标签来显示/隐藏"子"内容(通过使用class属性。

在加载时,如果$('.StoreRow2').length小于4,我想显示所有的"节点"。

我使用一个函数来进行切换:

// Allow an item to toggle other items' visibility
$(".VisibilityToggle").click(function () {
    var ControlledClass = findClass($(this), "Toggles-");
    if (ControlledClass != "") {
        $("." + ControlledClass).toggle();
        var Text = $(this).attr("rel");
        if (Text != "") $(this).attr("rel", $(this).attr("rev")).attr("rev", Text).text(Text);
    }
    return false;
});

我想做的是通过从JS代码中调用它来触发"toggling"打开。

我原以为像"$(".VisibilityToggle").click()"这样的东西可以实现我想要的功能,但这似乎在我的代码中不起作用,但如果我通过Chrome中的JS控制台手动调用它,。我怀疑这与我的代码在事件绑定到页面之前运行有关。

你能帮忙吗?

例如,标记

...
<tr class='BrandRow TRBrand_2'>
    <td class="Level0">
        <p>
            <a id="DesktopApp0_ctl00_rptReportBrand_ctl01_A_Brand" rel="-" rev="+" class="button toggleButton SummaryToggle VisibilityToggle Toggles-BrandId_2">+</a> &nbsp;<strong>Brand2</strong>
        </p>
    </td>
    <td>
        <p>
            34</p>
    </td>
    <td>
        <p>
            21</p>
    </td>
    <td>
        <p>
            22</p>
    </td>
    <td>
        <p>
            0</p>
    </td>
    <td>
        <p>
            0.0&#37;</p>
    </td>
    <td>
        <p>
            1
        </p>
    </td>
    <td>
        <p>
            34.0
        </p>
    </td>
</tr>
<tr class='SiteRow BrandId_2 TRStore_10'>
    <td class="Level1">
        <p>
            <a id="DesktopApp0_ctl00_rptReportBrand_ctl01_rptSites_ctl00_A_Site" rel="-" rev="+" class="button toggleButton SummaryToggle VisibilityToggle Toggles-TRSiteUser_10">+</a>&nbsp; <span class="Bold">BrandX - Store 10</span>
        </p>
    </td>
    <td>
        <p>
            14</p>
    </td>
    <td>
        <p>
            9</p>
    </td>
    <td>
        <p>
            8</p>
    </td>
    <td>
        <p>
            0</p>
    </td>
    <td>
        <p>
            0.0&#37;</p>
    </td>
    <td>
        <p>
            0</p>
    </td>
    <td>
        <p>
            0.0
        </p>
    </td>
</tr>
<tr class='UserRow TRStoreUser_10'>
    <td class="Level2">
        <p>
            <img src="/img/icons/spacer.png" alt=" " />
            &nbsp;Clarke Kent
        </p>
    </td>
    <td>
        <p>
            3</p>
    </td>
    <td>
        <p>
            3</p>
    </td>
    <td colspan="3" class="Drive5Graphic">
        <span class=" d5_3">1</span><span class=" d5_3">2</span><span class=" d5_3">3</span><span>4</span><span>5</span><span class=" plus">+</span>
    </td>
    <td>
        <p>
            0</p>
    </td>
    <td>
        <p>
            &#8734;</p>
    </td>
</tr>
<tr class='UserRow TRSiteUser_10'>
    <td class="Level2">
        <p>
            <img src="/img/icons/spacer.png" alt=" " />
            &nbsp;Alexie Sayle
        </p>
    </td>
    <td>
        <p>
            2</p>
    </td>
    <td>
        <p>
            2</p>
    </td>
    <td colspan="3" class="Drive5Graphic">
        <span class=" d5_2">1</span><span class=" d5_2">2</span><span>3</span><span>4</span><span>5</span><span class=" plus">+</span>
    </td>
    <td>
        <p>
            0</p>
    </td>
    <td>
        <p>
            &#8734;</p>
    </td>
</tr>
<tr class='UserRow TRSiteUser_10'>
    <td class="Level2">
        <p>
            <img src="/img/icons/spacer.png" alt=" " />
            &nbsp;Anders Bottom
        </p>
    </td>
    <td>
        <p>
            1</p>
    </td>
    <td>
        <p>
            1</p>
    </td>
    <td colspan="3" class="Drive5Graphic">
        <span class=" d5_1">1</span><span>2</span><span>3</span><span>4</span><span>5</span><span class=" plus">+</span>
    </td>
    <td>
        <p>
            0</p>
    </td>
    <td>
        <p>
            &#8734;</p>
    </td>
</tr>
<tr class='UserRow TRSiteUser_10'>
    <td class="Level2">
        <p>
            <img src="/img/icons/spacer.png" alt=" " />
            &nbsp;Daniella Ecclescake
        </p>
    </td>
    <td>
        <p>
            1</p>
    </td>
    <td>
        <p>
            1</p>
    </td>
    <td colspan="3" class="Drive5Graphic">
        <span class=" d5_1">1</span><span>2</span><span>3</span><span>4</span><span>5</span><span class=" plus">+</span>
    </td>
    <td>
        <p>
            0</p>
    </td>
    <td>
        <p>
            &#8734;</p>
    </td>
</tr>
<tr class='UserRow TRSiteUser_10'>
    <td class="Level2">
        <p>
            <img src="/img/icons/spacer.png" alt=" " />
            &nbsp;Mark E Smith
        </p>
    </td>
    <td>
        <p>
            2</p>
    </td>
    <td>
        <p>
            1</p>
    </td>
    <td colspan="3" class="Drive5Graphic">
        <span class=" d5_1">1</span><span>2</span><span>3</span><span>4</span><span>5</span><span class=" plus">+</span>
    </td>
    <td>
        <p>
            0</p>
    </td>
    <td>
        <p>
            &#8734;</p>
    </td>
</tr>
<tr class='UserRow TRSiteUser_10'>
    <td class="Level2">
        <p>
            <img src="/img/icons/spacer.png" alt=" " />
            &nbsp;Matthew Bannister
        </p>
    </td>
    <td>
        <p>
            1</p>
    </td>
    <td>
        <p>
            1</p>
    </td>
    <td colspan="3" class="Drive5Graphic">
        <span class=" d5_1">1</span><span>2</span><span>3</span><span>4</span><span>5</span><span class=" plus">+</span>
    </td>
    <td>
        <p>
            0</p>
    </td>
    <td>
        <p>
            &#8734;</p>
    </td>
</tr>
<tr class='UserRow TRSiteUser_10'>
    <td class="Level2">
        <p>
            <img src="/img/icons/spacer.png" alt=" " />
            &nbsp;Raj Patel
        </p>
    </td>
    <td>
        <p>
            3</p>
    </td>
    <td>
        <p>
            0</p>
    </td>
    <td colspan="3" class="Drive5Graphic">
        <span>1</span><span>2</span><span>3</span><span>4</span><span>5</span><span class=" plus">+</span>
    </td>
    <td>
        <p>
            0</p>
    </td>
    <td>
        <p>
            &#8734;</p>
    </td>
</tr>
...

您可以使用触发器:

$(".ABrand").trigger('click');

这就是你想要实现的吗?

您的语法没有错:click()将触发对元素的单击。

$('.ABrand').click();

我认为需要更多的标记才能正确回答您的问题,但请看看live()delegate(),如果您担心事情没有及时连接起来,它们可以在document.ready之外使用。

$(".VisibilityToggle").live("click", function() { ... } );
$("#Container").delegate(".VisibilityToggle", click", function() { ... } );

如果您在事件绑定(即.click(function(){}))和事件触发器(即.click())的定时方面遇到问题,为什么不将两者链接在一起呢?

$('.ABrand').click(function() {
    // do 3 flips, 5 somersaults and a pirouette
}).click();

这样,您就可以确保在单击绑定之后调用单击触发器。