Jquery - исправить гиперссылки внутри переключаемого элемента - PullRequest
1 голос
/ 29 февраля 2012

У меня проблема с каким-то скриптом Jquery, который у меня есть, и я надеюсь, что кто-то может указать мне правильное направление.

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

Функция: -

function toggleDisplay(itemToToggle, itemHeightOpen, itemHeightClosed) {
$(itemToToggle).toggle(
  function () {
    $(this).animate({ 'height': itemHeightClosed }).addClass('minus');
    },
      function () {
    $(this).animate({ 'height': itemHeightOpen }).removeClass('minus');
    });
 };

Звонок: -

var heighttomatch = $('#inlineSummaryWrapper').height() + 28;
toggleDisplay('#inlineSummary', '1.2em', heighttomatch);

HTML: -

<div id="inlineSummary" class="displayToggle">
  <h2>Summary</h2>
  <div id="inlineSummaryWrapper">
   <a href="/mylink">the link</a>
  </div>
</div>

Я пытался обернуть "Зов" внутри действия щелчка, нацеленного на H2, но это имело странный эффект с открытием и закрытием контейнера, поэтому я не уверенчто делать.

Заранее благодарим за помощь.

1 Ответ

1 голос
/ 29 февраля 2012

Это происходит потому, что на ссылке распространяется событие click.Вы можете остановить его с помощью event.stopPropagation().

function toggleDisplay(itemToToggle, itemHeightOpen, itemHeightClosed) {
    $(itemToToggle).find('a').click(function (e) {
        e.stopPropagation();
    });
    ...
}
...