Как мне заставить jQuery .expander вызываться при загрузке, а не только по щелчку? - PullRequest
4 голосов
/ 08 июля 2011

У меня проблемы с функцией jQuery .expander, и она вызывается при загрузке страницы, и я знаю, что это связано с динамическим заполнением данных с помощью jQuery.

ПРИМЕЧАНИЕ. Похоже, что изменение реальных функций Ajax не будет возможным.

Было предложено попробовать .live (), который хорошо работал, но есть проблемы с привязкой div.tags-hidden снова и снова.

Затем было предложено, чтобы я использовал переменную "bound" и проверил, был ли div.tags-hidden был привязан первым, а если нет, то установил для переменной значение true, что фактически отключает .expander для любого другого div.tags- скрытый.

Итак, на самом деле есть две проблемы, по которым я был бы благодарен за любые советы:

1) Функция .expander не вызывается до тех пор, пока не произойдет щелчок

2) Div.tags-hidden, который пользователь нажимает первым, - единственный, кто имеет функцию .expander.

Надеемся, что слайды ниже иллюстрируют это лучше (изображения ниже).

СЛАЙД 1: При загрузке функция .expander не включается

СЛАЙД 2: .Expander происходит только тогда, когда происходит щелчок

СЛАЙД 3: Текущая функция для вызова .expander (см. Код ниже). Это включает в себя переменная связана = ложь. Это было рекомендовано при использовании .live (), но это вызывает проблемы

СЛАЙД 4: Возвращаясь к интерфейсу пользователя, эти два модуля содержат множество тегов для вызова .expander функция, но только первый щелчок div.tags-hidden получает эту обработку. Это связано с тем, что для переменной «bound» задано значение false, что приводит к тому, что обработка экспандера выполняется только одним скрытым тегом div.tags, при первом щелчке.

Подводя итог: Как я могу получить все div.tags-hidden, чтобы содержать функцию .expander onload?

Вот текущий jQuery, который я использую:

<script type="text/javascript">
var bound = false;
$('div.tags-hidden').live('load click', function() {
    if(!bound) {
      $(this).find('p').expander({
      slicePoint:       50,
      expandText:         '<img src="/images/layout/site/btn_expand.png" alt="Click to Expand Tags" title="Click to Expand Tags">', 
      collapseTimer:    0, 
      userCollapseText: '<img src="/images/layout/site/btn_collapse.png" alt="Click to Collapse Tags" title="Click to Collapse Tags">'
  });
        bound = true;
    }
});
</script>

Вот слайды:

Slide 1

Slide 2

Slide 3

Slide 4

Очень благодарен за любую помощь в этом. Митч

1 Ответ

1 голос
/ 08 июля 2011

Убедитесь, что все готово для вас, прежде чем пытаться действовать по немуAKA $ (документ) .ready ();

<script type="text/javascript">
$(document).ready(function(){

var bound = false;
$('div.tags-hidden').live('load click', function() {
    if(!bound) {
      $(this).find('p').expander({
      slicePoint:       50,
      expandText:         '<img src="/images/layout/site/btn_expand.png" alt="Click to Expand Tags" title="Click to Expand Tags">', 
      collapseTimer:    0, 
      userCollapseText: '<img src="/images/layout/site/btn_collapse.png" alt="Click to Collapse Tags" title="Click to Collapse Tags">'
  });
        bound = true;
    }
});
});
</script>
...