2010-03-17 3 views
4

У меня есть следующий сценарий.Событие JQuery click, не работает

У меня есть index.php страница со следующим кодом JQuery включена

jQuery(document).ready(function(){ 
    jQuery('#sIMG img').click(function() { 
     var currentSRC = jQuery(this).attr('src'); 
     var altSRC = jQuery(this).attr('title'); 
     var imgID = jQuery(this).attr('id'); 
     var cat = jQuery(this).attr('name'); 


     /*Fade, Callback, swap the alt and src, fade in */ 
     jQuery('#main').fadeOut('fast',function() { 
      jQuery('#main').load("detail.php?id="+imgID+"&category="+cat); 
      jQuery('#main').fadeIn('fast'); 

     }); 
    }); 
}); 

Теперь у меня есть два Div тегов, называемых #main и #right на странице index.php. Когда я нажимаю на элемент меню, правый изменяется на кучу изображений, если я нажимаю на одно из этих изображений, приведенный выше код должен вступить в силу и загрузить в главный div, но он просто не работает. изображения расположены в div под названием sIMG. Любая помощь будет оценена

+0

Изображения, которые загружаются справа (после щелчка на родительском изображении справа), вставленные с помощью javascript, или они просто скрыты с помощью css при загрузке страницы? – Levi

+0

Используете ли вы JS-отладчик? Проверьте Firebug на наличие сообщений об ошибках. –

+0

Просьба уточнить, что «просто не работает». Это вообще работает? Что происходит, когда вы ставите «предупреждение» повсюду? – Kobi

ответ

12

попробовать использовать live

jQuery('#sIMG img').live("click",function(){ 
}); 

По JQuery 1.7, метод .live() является устаревшим. Используйте .on() для присоединения обработчиков событий.

jQuery('#sIMG img').on("click",function(){ 
}); 
+1

серьезно, я люблю тебя ..... Ive использовал jquery в течение многих лет и пропустил этот ... – Alex

+4

Как и jQuery 1.7, вы должны использовать .on() вместо live(). – Loolooii

+0

В 2017 году с использованием 3.0 live устарели, https://jquery.com/upgrade-guide/ 3.0/# break-change-on-quot-ready-quot-fn-deleted – Callat

1

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

jQuery('#sIMG img').each(function() { 
    jQuery(this).click(function() { 

    }); 
}); 
+0

Нужно ли связать обработчик событий, подобный этому, с объектом jquery? – rahul

+0

Зачем мне нужно использовать .live, чтобы получить эту работу? Это потому, что я мог дублировать идентификаторы, как кто-то, упомянутый на этой странице? Я изменил идентификаторы, чтобы убедиться, что он уникален, но у меня все еще была та же проблема. Использование .live работало, но я хочу знать, почему это произошло? – Naveen

0

Одна из причин того, что JQuery щелчок не работает, что у вас есть dupplicates идентификаторов в форме.

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