Переключите не работу

У меня есть ряд пар отделения ('заголовок' и 'тело'). Когда пользователь нажимает на заголовок, следующий раздел тела должен показать/скрыть (и обновить +/-значок). Все отделения записаны, чтобы быть "показанными" на загрузке страницы, но я хотел бы "закрыть" некоторые из них, и пользователь может открыть их, если они желают. Просто не может заставить это работать! Код ниже, если кто-либо может помочь!

Демонстрационный раздел:

  <div class="expandingSection_head" id="expanderAI">
      <img class="imgExpand" src="../images/treeExpand_plus.gif" />
          Header text here
  </div>
  <div class="expandingSection_body">
      body text here
  </div>
  ...more pairs of divs like this on rest of page...

Код для переключения:

    $(".expandingSection_head").toggle(
    function() {
        $(this).css('background-color', '#6BA284');
        $(this).find('.imgExpand').attr('src', '../images/treeExpand_plus.gif');
        $(this).next(".expandingSection_body").slideUp(400);
    },
    function() {
        $(this).css('background-color', '#6BA284');
        $(this).find('.imgExpand').attr('src', '../images/treeExpand_minus.gif');
        $(this).next(".expandingSection_body").slideDown(400);
    });

    $("#expanderAI").toggle();

Эта последняя строка не "переключает" указанное отделение (т.е. "закрывает" его). Кто-либо знает почему? Вероятно, что-то простое.

Спасибо!

8
задан jqwha 6 August 2010 в 14:11
поделиться

4 ответа

Не будет переключать , просто указав:

$("#expanderAI").toggle();

За этим должно быть какое-то событие, например:

$('element').click(function(){
  $("#expanderAI").toggle();
});

Обновление:

Попробуйте следующее:

$('#expanderAI').click(function(){
  $(this).toggle();
});
5
ответ дан 5 December 2019 в 18:55
поделиться

функция переключения, похоже, не используется без параметров:

http://api.jquery.com/toggle/

попробуйте использовать $ ('# elementID'). click (); вместо

1
ответ дан 5 December 2019 в 18:55
поделиться

Просто попробовал вариант этих идей :). Итак ...

Это не сработает, если я просто изменю последний .toggle () на .click () ... но ДЕЙСТВИТЕЛЬНО работает, если я сделаю это изменение, но вызову его ПОСЛЕ загрузки страницы. Я думаю, здесь проблема со сроками.

т.е. если я добавлю кнопку:

, а затем сделаю:

    $('#tmpbtntog').click(function() {
        $('#expanderAI').click();
    }
    );

, то щелчок по кнопке переключает div! Однако, если я просто заменю строку

$("#expanderAI").toggle();

в моем исходном коде выше на .click (), она НЕ будет работать! Странный. Любые идеи? Можете ли вы «отложить» эти вещи? Я называю это в document.ready и т. Д., Поэтому не думаю, что это проблема.

0
ответ дан 5 December 2019 в 18:55
поделиться

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

$("#expanderAI").click();

РЕДАКТИРОВАТЬ:

хорошо: я только что написал тестовый сценарий: проверьте его:

<div id="ToggleMe">Toggle Me</div>
<div id="ChangeMe" style="background-color:Aqua;">Hello WOrld</div>
<script type="text/javascript">
 $(function () {
        $('#ToggleMe').toggle(
            function () {
                $('#ChangeMe').css('background-color', '#ff0000');

            },
            function () {
                $('#ChangeMe').css('background-color', '#000000');
            }

        );

        $('#ToggleMe').click();


    });
</script>

поэтому изменяемый div ДОЛЖЕН отображаться как голубой, но при загрузке страницы он красный. b / c событие click () запускается для готового документа.

так что поместите ваш $ ('# ToggleMe'). Click (); в разделе готовности документа после того, как вы прикрепите обработчики, и он действительно должен работать. доказательство прямо здесь!

2
ответ дан 5 December 2019 в 18:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: