0

バックグラウンド

jqueryUIを使用して画像をドラッグできる動的なphpギャラリーを生成します。

すべての画像にはトリミングするオプションがあります。

ギャラリーで最初にリストされている画像は、ギャラリーの「タイトル画像」であり、非「タイトル画像」とは異なるクラップ率を持っています。

問題

属性を持つすべての画像をエコーアウトします'ondblclick="open_original=(21, 153)"'。ギャラリーの最初の画像のみに変更open_originalして、トリミング率を変える方法を理解する必要があります。open_original_main

使用する.attr()と、すべての属性値が失われ、元に戻すことができません。関数名を置き換える方法はありますか?

これまでのところ、この問題に対する私のjquery:

$(".galOf .gallery_nav:first-child .img_thumb img").ready(function(){
    $(this.ondblclick).replace("open_original","open_original_main");
});

.replace()は関数ではないことを知っています、ただ情報を読んでください...。

4

4 に答える 4

1

このように試すことができます。

var attrName = $('#image:first').attr("ondblclick");

var newAttrName = attrName.replace("open_original","open_original_main");

$('#image:first').attr("ondblclick", newAttrName );
于 2012-07-25T12:37:29.887 に答える
0

jqueryで変更するよりも、phpでクリックイベントハンドラーを変更して正しいハンドラーをエコーする方が簡単なようです。カウンターなどを使用し、カウンターが初期状態と等しい場合は「open_original_main」を使用し、そうでない場合は「open_original」を使用します。

于 2012-07-25T12:28:58.143 に答える
0
$(".galOf .gallery_nav:first-child .img_thumb img").ready(function(){
  var val = $(this).attr("ondblclick"); // copy attribute value
  val = val.replace("open_original","open_original_main"); //replace
  $(this).attr("ondblclick",val); // set attribute value
});
于 2012-07-25T12:36:29.493 に答える
0

コメントのとおりですが、サムネイルの位置によってやりたいことが違うようです。また、2 つの関数のほとんどのコードは同じようです。その場合、新しい関数に対してすべてのコードを繰り返す必要はありません。できることは次のとおりです。

function open_img() {
  // is this the first image?
  var isFirst = $(this) == $('.galOf .gallery_nav:first-child .img_thumb img');

  if(isFirst) open_original(100, 100);
  else open_original (21, 153);
}
于 2012-07-25T12:47:43.320 に答える