Могу ли я смоделировать щелчок по гиперссылке с помощью кода JQuery? - PullRequest
1 голос
/ 16 июня 2011

Я видел пару сообщений SO, которые, по-видимому, относятся к моему вопросу, но ни одна из них, похоже, не выполняет то, что я хочу.

У меня есть вложенная структура для отображения иерархий (бизнес-единиц и брендов) вreport:

<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;
});

и что я хотел быdo вызывает триггер open, вызывая его из кода JS.

Я думал, что-то вроде '$ (". VisibilityToggle"). click () `будет делать то, что я хочу, но это не похожеработает в моем коде, но делает , если я вызываю его вручную через консоль JS в Chrome. Я подозреваю, что это связано с моим кодом, выполняющимся до того, как события будут привязаны к странице.Не могли бы вы помочь?

Спасибо за чтение.

Например, разметка

...
<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>
...

Ответы [ 3 ]

4 голосов
/ 16 июня 2011

вы можете использовать триггер:

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

Это то, что вы хотели достичь?

1 голос
/ 16 июня 2011

Нет ничего плохого в том, что у вас есть синтаксис: click () вызовет щелчок по элементу.

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

Требуется больше разметки, чтобы правильно ответить на ваш вопрос, я бы подумал, но взгляните на live() и delegate(), которые можно использовать вне document.ready, если ты боишься, что вещи не вовремя подключаются.

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

$("#Container").delegate(".VisibilityToggle", click", function() { ... } );
0 голосов
/ 26 августа 2011

Если у вас возникли проблемы с синхронизацией привязки события (т. Е. .click(function(){})) и триггера события (т. Е. .click()), почему бы просто не связать их вместе?

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

Таким образом, вы уверены, триггер клика вызывается после привязки клика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...