4

class="thumnail" のサムネイル画像に jQuery クリック イベントをバインドしています。

$(".thumbnail").click(function(){
  var obj = new Object();
  obj.el = "imageEdit";
  obj.id = $(this).attr("id").replace("img_","");
  openDialogue(obj);
});

ご覧のとおり、私は次のとおりです。

  1. オブジェクト「obj」を作り、
  2. 関数「openDialogue」を呼び出し、
  3. 私のオブジェクト「obj」をopenDialogueに渡します。

openDialogue はダイアログ ボックスを開き、ダイアログ ボックスで ajax 呼び出しを実行し、画像パスを取得して、ダイアログ ボックスに画像を入力します。これは、php を使用してフォーム アクション ページとしてページの更新時にサムネイルが読み込まれるときに正常に機能します。

しかし、選択フィールドの変更時に、js/jQueryを使用してサムネイルボックスにデータを入力する必要もあります.jQueryは、ボタン、アンカー、画像などの動的に作成された要素をリッスンしないと思います(これについて間違っていますか? ?)。

選択ボックスを使用して製品を変更すると、次のコードを使用してサムネイル jpg をサムネイル スペースに入力します。

$("#picture_row").empty();
$.each( data, function( k ) {
  var id;
  $.each( data[k], function( kk,vv ){
    if(kk == "id"){ 
      id = vv;
      var e = $('<div class="thumbBox" id="imageBox_'+id+'"></div>');
      $('#picture_row').append(e);
    }
    else if(kk == "file_name"){ 
      var obj = new Object();
      obj.el = "imageEdit";
      obj.id = id;

      var file_name = vv.replace(".jpg","_thumb.jpg");
      var img = $("<img class='thumbnail' id='img_"+id+"' src='../images/products/thumbs/"+file_name+"' onclick='openDialogue("+obj+");return false;' />");
      $("#imageBox_"+id).append(img);
    }
  })
});

ご覧のとおり、新しいイメージを作成し、onclick を追加しようとするのは次の行です。

var img = $("<img class='thumbnail' id='img_"+id+"' src='../images/products/thumbs/"+file_name+"' onclick='openDialogue("+obj+");return false;' />");
$("#imageBox_"+id).append(img);

何らかの理由で、オブジェクト「obj」を動的作成関数呼び出しに渡すことができません。

onclick='openDialogue("+obj+");return false;'

次のエラーが表示されます。

Timestamp: 9/28/2013 7:04:33 PM
Error: SyntaxError: missing ] after element list
Source File: (domain and path)/management/
Line: 1, Column: 21
Source Code:
openDialogue([object Object]);return false;
4

1 に答える 1

4

イベント処理をインライン化しようとする代わりに、jQuery を使用します.on()

var img = $("<img class='thumbnail' id='img_"+id+"' src='../images/products/thumbs/"+file_name+"' />")
.on('click', function(){
  openDialogue(obj);
  return false;
}) ;
$("#imageBox_"+id).append(img);
于 2013-09-28T23:09:56.470 に答える