2016-04-04 2 views
-2

Есть похожие вопросы по этой теме, но их ответы не работали для моей проблемы.on («щелчок», событие) стрельба без нажатия

Im пытается использовать jQuery's on("click") для запуска функции, которая просто изменяет класс идентификатора, который был нажат. Но функция вызывается, когда страница загружается, а затем, если вы нажмете на то, что должно запускать функцию, которой она не пользуется.

Вот HTML:

<nav> 
    <ul> 
     <li id="all" class="tab-current"><a><span>All Departments</span></a></li> 
    </ul> 
</nav> 

А вот ЯШ:

var $all = $("#all"); 
$all.on("click", function(){ 
    tabClicked("all"); 
}); 

Я также попытался это:

$all.on("click", tabClicked("all")); 

И это функция:

function tabClicked(input){ 
    //do some stuff here 
} 

Любые идеи? Заранее спасибо! :)

+2

'$ (функция)' является сокращением для '$ (документ) .ready' – Rayon

ответ

1
var $all = $("#all"); 

$all.on("click", function(){ 
    tabClicked("all"); 
}); 

Попробуйте отредактировать его вот так. $(function() {}); это как $(document).ready(), поэтому поставьте function(){} вместо $(function() {});.

EDIT:

По какой-то причине, он стреляет, если script тег после элементов в HTML. Я пробовал ваш код с внешним JS и т. Д. - не работал.

Try, как это: JSFiddle

EDIT 2: Вы должны поставить свой обработчик в $(document).ready() функции в любом месте вы хотите, это причина.

$(document).ready(function() { 
var $all = $("#all"); 
$all.on("click", function(){ 
    alert("click"); 
}); 
}); 
+0

Это не срабатывает, когда страница загружается, но не срабатывает при нажатии ... –

+0

Я не понимаю. .. Он теперь не срабатывает сам, но не работает на клик? – Tinmar

+0

точно, что сейчас проблема –

3

У вас есть ошибка в логике обработчика кликов; Вам просто нужно пройти анонимную функцию обработчика:

$all.on("click", function(){ 
    tabClicked("all"); 
}); 

Ваш оригинальный $(function() {}); эквивалентно $(document).ready(), следовательно, он был немедленно выполнен, независимо от того, была ли нажата элемент.

+1

Я сомневаюсь, что это будет бросать любой синтаксис error..Edit: Он будет вызываться 'click'. – Rayon

+0

Это не срабатывает, когда страница загружается, но не запускается либо при нажатии ... –

+0

@PabloDuque это должно работать нормально. Проверьте другие ошибки на консоли. –

1

заменить $ (функция() для функции()

+0

Это не срабатывает, когда страница загружается, но не запускается при нажатии ... –

+0

Почему var $ all = $ ("# all"); Когда вы можете напрямую добавить его в функцию statemnt $ ("#all") .on ("click", function() { tabClicked ("all"); }); – ascii

+0

Хорошо, я использую его несколько раз и его короче, чтобы называть его всего $ all. Но это не проблема здесь –

Смежные вопросы