Как повторно включить вкладку jQuery после использования ‘onclick’?

#jquery #html #tabs #onclick

#jquery #HTML #вкладки #onclick

Вопрос:

Это может быть вопрос новичка… но вот что дальше…

Я настроил несколько вкладок с помощью jQuery:

 <div id='tabs'>
   <ul id='ui-tab-ul'>
      <li><a href='#tabPrimaryDetail'>Primary</a></li>
      <li><a href='#tabSecondaryDetail' onclick='javascript: jQuery.fn.getSecondaryDetails();'>Secondary</a></li>                   
   </ul>
   <div id='tabPrimaryDetail'>
       <p>No information available</p>
   </div>
   <div id='tabSecondaryDetail'>
       <p>No information available</p>
   </div>
</div>
  

Содержимое моей основной панели генерируется другим щелчком мыши, но поскольку это первая вкладка, мне не нужно было активировать саму вкладку… Но для моей дополнительной вкладки я хочу получать ее содержимое, когда пользователи нажимают на саму вкладку… Итак, я поместил туда событие onclick для выполнения AJAX-вызова, получения данных и заполнения содержимого…

Однако я не могу показать дополнительную вкладку… Я пытался использовать:

 $('#tabs').tabs('show', 1);
  

или

 $('#tabs').tabs('select', 1);
  

Но ни один из них не работает, если я использую select, это просто снова вызовет мой пользовательский AJAX-вызов… Есть ли способ сохранить onclick для действия с вкладкой?

Извините, я все еще новичок в jQuery, начинаю пользоваться им только около 2 недель.

Комментарии:

1. событие не имеет javascript: только атрибута href, который имеет javascript:

Ответ №1:

Либо вы не показываете МНОГО кода, либо он полон ошибок. Во-первых, я нигде не вижу ‘#tabs’, определенного:

 <div id="tabs">
  

например… Затем покажите определенный элемент, который вы можете использовать .показать функцию. Вот так:

 $('#tabSecondaryDetail').show();
  

Кроме того, это:

 onclick='javascript: jQuery.fn.getSecondaryDetails();'
  

должно быть:

 onclick='getSecondaryDetails();'
  

и т.д…

Я не хочу сейчас приводить вам полный код, но я надеюсь, что это хорошее начало.

Комментарии:

1. stackoverflow был испорчен после того, как я его отредактировал… похоже, мне понадобится дополнительная блокировка строки, если я захочу опубликовать код.

2. Не могли бы вы, пожалуйста, объяснить, почему мне не нужно выполнять полный вызов функции, такой как jQuery.fn.<моя функция>()? Потому что я только что попробовал ваш метод, и он не может найти мою функцию…

3. Извините, я думал, вы используете обычный jQuery (в этом случае вам следует вызывать функции так, как я написал), но, очевидно, вы также используете плагин jQuery UI (как указал @GregM), поэтому вам, вероятно, следует оставить все по-старому. Просто попробуйте включить больше информации о вопросе в следующий раз.

Ответ №2:

Решением было бы не использовать onclick для a тега

Возможно, вам следует использовать другое событие, больше похожее на show или select

 $( "#tabs" ).tabs({
   select: function(event, ui) { jQuery.fn.getSecondaryDetails();}
});
  

чтобы заполнить вкладку до того, как она будет показана

Или

 $( "#tabs" ).tabs({
   show: function(event, ui) { jQuery.fn.getSecondaryDetails();}
});
  

чтобы заполнить вкладку после ее отображения

Комментарии:

1. Это ничего не даст по многим причинам, одна из которых заключается в том, что #tabs не существует. Во-вторых, событие onclick нормально для тегов a, вам просто нужно вернуть false или поведение preventDefault().

2. Я почти уверен, что он в качестве идентификатора tabs, если он использует это: jqueryui.com/demos/tabs/#event-show и зачем использовать onclick, когда он может использовать событие defaul используемой библиотеки

3. Определенно! Тем не менее, он должен был показать div контейнера, верно?

4. да, конечно, мы делаем все, что в наших силах, когда у нас нет всего кода 🙂