2

私は次のようにいくつかのhtmlとjQueryコードを持っています:

$(function(){
    $("#button").click(function(e){
    $('.imgdiv').load('images3.php');
    e.preventDefault();
    });
});

<img id="preview">
<div class="imgdiv">
//PHP inserted images
<img id="image1" class="t" src="/images/image1.png">
</div>

$(".imgdiv img").click(function(e) {
e.preventDefault();
$("#preview").attr("src","images/image"+this.id.substr(5,6) + ".png");
});

ただし、phpが画像を変更すると、このonclickイベントは機能しなくなります。タグは、タグが含まれているdiv構造とまったく同じです。この問題の原因がわかりません。誰?

防止のデフォルトも機能しないことに注意してください-ページの上部にジャンプします。

4

2 に答える 2

3

ブロック内の要素を更新する.imgdivため、更新された要素にバインドされているすべてのイベントも表示されなくなります。この問題を解決するには、委任イベントアプローチを使用できます。

$(".imgdiv").on("click", "img", function(e) {
   $("#preview").attr("src","images/image" + this.id.substring(5) + ".png");
   e.preventDefault();
});
于 2012-10-21T22:36:03.480 に答える
0

要素を変更した後、運命の要素が選択した後のサポートのために、クリックがそれらに影響を与える方法を変更する可能性があります

jQuery1.8または1.7

$("body").on("click", ".imgdiv img", function(e){
    e.preventDefault();
    $("#preview").attr("src","images/image"+this.id.substr(5,6) + ".png");
});

http://api.jquery.com/on/

jQuery <1.7

$(".imgdiv img").live("click", function(e){
    e.preventDefault();
    $("#preview").attr("src","images/image"+this.id.substr(5,6) + ".png");
});

http://api.jquery.com/live/

dom変更後の「.on」関数に関する説明:.on()がdom変更を検出しない

この助けを願っています

于 2012-10-21T22:45:55.117 に答える