Почему моя функция Jquery не работает?

#jquery #jquery-plugins

#jquery #jquery-плагины

Вопрос:

У меня есть эта функция jquery —

 function domail_slide_settings(obj)
{
  $("div#"   obj).toggle();
}
  

и когда я выполняю это так —

 <a href="#" onclick="domail_slide_settings('toggle')" id="toggle" >Toggle</a>
  

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

Заранее спасибо!

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

1. вы отказываетесь от использования jquery, если все еще добавляете эту функцию в onclick. создайте внешний js и используйте $ («#toggle»).click()

2. как выглядит ваш div html-код?

Ответ №1:

попробуйте с

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

и укажите на элемент < div> вместо привязки

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

1. как это # obj правильно? obj будет объектом привязки тега, поэтому префикс с # не должен быть необходимым / работать

2. Привет, ты можешь посмотреть этот jsfiddle и отредактировать его, потому что он не работает. Я не знаю причины. Возможно, вам следует знать. Пожалуйста, помогите мне. jsfiddle.net/NkXUv

3. Эй, это сработало. Но дело в том, что я хочу, чтобы это была функция, которую я мог бы использовать и с другими элементами. Есть несколько идей!

Ответ №2:

Атрибуты ID должны быть уникальными в HTML-документе, иначе вы столкнетесь с нежелательными побочными эффектами. Судя по всему, ваш <a> элемент с обработчиком щелчков имеет тот же id атрибут, что и div#toggle элемент, который вы переключаете. Это почти наверняка было бы проблемой в некоторых браузерах.

Попробуйте изменить идентификатор вашего <a> элемента, чтобы он был уникальным:

 <a href="#" onclick="domail_slide_settings('toggle')" id="toggle_div" >Toggle</a>
  

Ответ №3:

Попробуйте это вместо:

 <a href="#" id="toggle">Toggle</a>
<div id="div_toggle"></div>
  

и это:

 $(function() {
    $("#toggle").click(function(e){
        e.preventDefault();
        $("#div_"   this.id).toggle();
        // or $(this).next().toggle(); depending on your markup
    });
});
  

Бьюсь об заклад, вы используете один и тот же идентификатор для вашего <a> тега и вашей <div> метки, чего делать не следует.

Ответ №4:

или вы можете попробовать

 $('#'   obj).parent().toggle();
  

^^

Ответ №5:

результатом вашей конкатенации строк — «div# toggle» — является выбор div с id toggle вместо вашего привязки.

Я думаю, вы имели в виду выбрать ее как:

 $("#toggle").parent()
  

или, если вам действительно нужен сам якорь, используйте это:

 $("#toggle")
  

В любом случае, поскольку ваша функция является обработчиком onclick (правда, напрямую через браузер, не используя jQuery event api), вы могли бы также сделать это:

 function domail_slide_settings() {
    $(this).parent().toggle()
    // or this.toggle();
}
  

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

1. Неправильно. Это действительно, но это не будет соответствовать его стихии.