2014-09-29 2 views
5

По какой-то причине, когда я нажимаю на картинку с этим кодом JQuery оповещения экран не обнаруживается

HTML:.

<div id="example1"> 
<div> 
    <div> 
    <div class="user"> 
    <img class="Image" src="images/image.jpg"> 
    </div> 
    </div> 
</div> 
</div> 

Javascript:

$(document).ready(function(){ 
$("img").click(function(){ 
    alert("it works!"); 
}); 
}); 

Я не могу понять, почему это не работает, я включил библиотеку Jquery и <script> тег под DIV

+1

отлично работает здесь Http: // jsfiddle.net/J24yN/446/ –

+0

Вы включили библиотеку jquery перед этим кодом javascript? –

+0

Проверьте свою консоль на наличие ошибок –

ответ

14

IMG не в DOM, когда обработчик события зарегистрирован. вы можете использовать $('body').on('click','img',function(){alert('it works');})

+0

работает! Конечно, внутри блока '$ (document) .ready' – Roland

+1

Или:' '' $ ('img'). Bind ('click', function() {...}); '' ' – isnullxbh

0

По какой-то причине, когда я нажимаю на изображение с этим кодом jquery, экран предупреждения не отображается.

Im используя плагин jquery для получения изображений из твиттера от людей, которые использовали #Image, это прекрасно работает и выставляет html то, что выглядит так.

Если я попробую селектор с телом вместо изображения, появляется предупреждение, но я не могу заставить его работать с селектором изображений, почему он не отвечает на это?

я включен JQuery, как это:

<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 

-им 100% уверен, что HTML является правильным проверил его по крайней мере 10 раз.

Единственная ошибка, которую дает консоль: «Attr.nodeValue» устарел. Вместо этого используйте «значение». , но я не думаю, что это должно прекратить работу jquery с над телом , когда я попробовал скрипт внизу под div, он тоже не работал.

HTML:

<div id="example1"> 
<div> 
    <div> 
    <div class="user"> 
    <img class="Image" src="images/image.jpg"> 
    </div> 
    </div> 
</div> 
</div> 

JavaScript:

$(document).ready(function(){ 
$("img").click(function(){ 
    alert("it works!"); 
}); 
}); 
+2

use '$ ('body'). On ('click', 'img', function() {alert ('it works')});' для динамически загружаемых элементов – electrophanteau

+0

Спасибо! этот, наконец, работал после 4 часов поиска :-) опубликуйте его как ответ, чтобы я мог нажать кнопку «принять», чтобы помочь другим людям – Stefan

1

Вместо того чтобы запускать свой код в документе document.ready(), вы должны использовать функцию window.load().

$(window).load(function() { 
    $("img").click(function(){ 
     alert("it works!"); 
    }); 
}); 
  • document.ready() является событием Jquery, он работает, когда DOM готов, например, все элементы должны быть найдены/использованы, но не обязательно все .
  • window.load() срабатывает позже (или в то же время в случае с ошибками ) при загрузке изображений и т. Д., Поэтому, если вы используете , используя размеры изображения, например, вы часто хотите использовать это вместо.
2
$(document).ready(function(){ 
    $(".Image").click(function(){ 
    alert("it works!"); 
    }); 
    }); 

Если вы хотите, чтобы ваш код для работы с вне изменения просто положить .Image не Img имя класса не Attribué имя

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