Несколько щелчков гиперссылки, необходимых для запуска функции jQuery - PullRequest
0 голосов
/ 09 сентября 2009

Код JQuery

 $(".riskInformationButton").bind("click", function(e){
         var toggler = $(this).parent().parent().next();
         var className = $(toggler).attr("class");

         while(className.indexOf("space") == -1){
            toggler.addClass("visible");

            if(toggler.hasClass("visible") && toggler.hasClass("hidden"))
            {
                toggler.removeClass("hidden");
            }
            else if (toggler.hasClass("visible"))
            {
                toggler.removeClass("visible");
                toggler.addClass("hidden");
            }

            toggler = toggler.next();
            className = $(toggler).attr("class");

            if(!className)
            {
                break;
            }
         }
    });

HTML-код

<tr class="spacerRow"></tr>
<tr id="point202" class="riskManagementRow">
<td class="rmRisk">
<a id="ctl00_ContentPlaceHolderMain_planRisk202_riskInformationButton202" class="riskInformationButton" name="PlanRisk202">
Student Drug Abuse
<span class="rmRiskCategory">(Schools)</span>
</a>
</td>
<td class="rmFrequency">
<select id="ctl00_ContentPlaceHolderMain_planRisk202_riskFrequencyDropDown202" class="riskFrequencyDropDown" onchange="updateRiskFrequencyOfPointOnMap('riskFrequencyDropDown202');" name="ctl00$ContentPlaceHolderMain$planRisk202$riskFrequencyDropDown202">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7" selected="selected">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
</td>
<td class="multiply">
<span class="multiply">x</span>
</td>
<td class="rmSeverity">
<select id="ctl00_ContentPlaceHolderMain_planRisk202_riskSeverityDropDown202" class="riskSeverityDropDown" onchange="updateRiskSeverityOfPointOnMap('riskSeverityDropDown202');" name="ctl00$ContentPlaceHolderMain$planRisk202$riskSeverityDropDown202">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6" selected="selected">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
</td>
<td class="equals">
</td>
<td class="rmRiskFactor">
</td>
<td class="rmPercentComplete">0%</td>
<td class="rmDeletePlan">
</td>
</tr>
<tr class="rmPlanSolutionRow hiddenOnLoad"></tr>
<tr class="rmPlanSolutionRow hiddenOnLoad"></tr>

<tr class="spacerRow">

... код продолжается в этом шаблоне.

Я пытаюсь показать скрытые строки, когда нажимается кнопка riskInformationButton. Проблема, с которой я сталкиваюсь, заключается в том, что иногда требуется несколько кликов для клика по гиперссылке, чтобы показать скрытые строки.

Любая помощь будет высоко ценится.

Ответы [ 2 ]

0 голосов
/ 10 сентября 2009

Подводя итоги кода и видя необходимость закончить в классе "spacerRow. Код может быть таким:

$(".riskInformationButton").bind("click", function(e){

     e.stopPropagation();

     var toggler = $(this).parent().parent().next();
     while(!toggler.hasClass("spacerRow")){
        toggler = toggler
                    .toggleClass("hidden")
                    .toggleClass("visible")
                    .next();
     }
});
0 голосов
/ 10 сентября 2009

Я бы посоветовал вам искать tr, у которых есть определенный класс, например "toggleable", а не те, в которых нет слова "space". Это займет много времени, и логике будет легче следовать.

    $(".riskInformationButton").bind("click", function(e){

         $("toggleable").each( function {

            toggler.toggleClass("hidden");
            toggler.toggleClass("visible");

     });
});

Это грубое представление о том, что вы могли бы получить. Я понимаю, что вы находитесь в крайнем сроке, и это может быть не самое быстрое решение: D

...