2013-09-27 4 views
0

Happy Friday errybody!jquery - привязка события события и запуск на странице загрузки

Хорошо, поэтому у меня возникли проблемы с привязкой к событию «щелчка» при загрузке определенного класса divs.

Случается, что при загрузке запускается событие «click». Я даже попробовал развязать, пока не свяжусь.

onAppLoad = function() { 
    console.log('span 4 loaded'); 

    hovering = function() { 
    console.log('hovering!'); 
    } 

    $.each($('.span4 > a'), function() { 
    var whichApp = $(this).attr('data-content'); 

    $(this).unbind('click'); 
    $(this).bind('click', hovering()); 

    }) 
} 

$('.span4').load(onAppLoad()); 
+0

Не могли бы вы представить живой пример? –

ответ

3

У вас есть ошибка синтаксиса:

$(this).bind('click', hovering()); 

Здесь вы вызываете функцию hovering а то, что вы хотите дать ссылку. Попробуйте это:

$(this).bind('click', hovering); 

Ваш .load() это тоже неправильно (по той же причине).

$('.span4').load(onAppLoad); 

Боковое примечание о .each. При переборе объект Jquery, вы должны написать его так:

$('.span4 > a').each(function() {}) 
+0

Ahh ... ваш совет по ссылке на вызов работал. Также переключился на мой .each, как вы рекомендовали. Спасибо! – veryrarecandy

1

Пара вещей, которые я вижу, что ваш код:
1. Вы пропустили закрывающую скобку для onAppLoad()
2. Изменение $(this).bind('click', hovering()); к $(this).bind('click', hovering);
3. Изменение $('.span4').load(onAppLoad()); к $('.span4').load(onAppLoad);

из любопытства, почему бы не поставить все обработчики событий в $(document).ready() случае?

+0

Я не хочу помещать событие в обработчики на .ready(), потому что промежутки записываются php. – veryrarecandy

+0

Как это важно? Они отображаются браузером на стороне клиента, а не PHP на стороне сервера. –

+0

Сначала я предположил, что промежутки не будут загружены в DOM на .ready() - вот почему я не хотел связывать их в то время. Но я переключил его на готовность, и он работает нормально! – veryrarecandy

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