JQuery вызывает .click () для автоматически сгенерированного img внутри - PullRequest
2 голосов
/ 03 июля 2011

Я использую это

xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("picHint").innerHTML=xmlhttp.responseText;
    }
  }

xmlhttp.open("GET","getpic.php?q="+str+"&t=" + Math.random(),true);
xmlhttp.send();

для передачи данных и генерации неопределенного количества картинок с эхом из кода PHP в getpic.php

while($row = mysql_fetch_array($result)){
echo "<div id=" . $num . "><img src=QR/" . $row['img']".png></div>";
}

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

    $("#img").click(function () { 
        alert("Hi");
    });

но ничего не предупреждают. Верхняя функция публикует информацию в том, что я не могу вызвать внутри этого идентификатора? Как я могу вызвать div или img внутри внешнего div?

Ответы [ 4 ]

2 голосов
/ 03 июля 2011

Если вы генерируете контент асинхронно, $.click() не будет работать, если вы не присоедините его вручную к каждому новому элементу. Попробуйте использовать $.live() вместо:

// Applies itself to all <img /> tags.
$("img").live("click",function(){
  alert("Hi");
});

Обязательно проверьте также id и обратите внимание, что использование целых чисел для вашего идентификатора не является хорошей практикой. Если вы хотите использовать числовой идентификатор изображения в качестве идентификатора, предварите его каким-либо типом альфа-значения, например #image19.

1 голос
/ 03 июля 2011
Символ

# обозначает фильтрацию по идентификатору способом JQuery. Вам необходимо отфильтровать по типу тега, что означает, что вы можете использовать:

$("img").live(function () { 
    alert("Hi");
});

Кроме того, попробуйте следовать правилам HTML, указав значения атрибутов в кавычках:

echo '<div id="'.$num.'"><img src="QR/'.$row['img'].'.png"></div>";
0 голосов
/ 03 июля 2011

Вы должны связать событие click после успешного выполнения ajax, ИЛИ использовать метод live.Например:

   $("img").live("click", function () { 
        alert("Hi");
    });

Обратите внимание, что "#img" выберет элементы с id="img", но "img" выберет все элементы с тегом <img ../>.

Надеюсь, это поможет.Приветствия

0 голосов
/ 03 июля 2011

Попробуйте $('img').live('click',function(){.....

Например, #img подразумевает, что есть узел dom с id = "img" Во-вторых, любые dom-узлы, добавленные после domready, не смогут быть привязаны к click (), поэтому вы должны использовать live ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...