jquery在不丢失属性值的情况下更改img属性名称

时间:2012-07-25 12:23:43

标签: jquery

背景

我生成动态的php库,可以使用jquery UI拖动图像。

所有图片都有裁剪选项。

在图库中首先列出的图像是图库的“标题图像”,并且具有与非“标题图像”不同的折叠率。

问题

我用属性'ondblclick="open_original=(21, 153)"'回显所有图像。 我需要弄清楚如何才能将open_original更改为open_original_main仅用于图库的第一批图像,以便它们具有不同的裁剪率。

如果我使用.attr(),那么我将丢失所有属性值,但我无法取回它们。有没有办法只更换他们的功能名称?

到目前为止我对这个问题的了解:

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

我知道.replace()不是函数,只读信息....

4 个答案:

答案 0 :(得分:1)

你可以这样试试,

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

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

$('#image:first').attr("ondblclick", newAttrName );

答案 1 :(得分:0)

似乎更容易更改php中的click事件处理程序并回显正确的处理程序,而不是使用jquery更改它。只需使用计数器或类似的东西,如果计数器等于其初始状态,则使用“open_original_main”,否则使用“open_original”。

答案 2 :(得分: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
});

答案 3 :(得分:0)

在评论中形成您所说的内容,似乎您希望根据缩略图的位置执行不同的操作。似乎两个函数中的大多数代码都是相同的。您不需要将所有代码重复到新功能。您可以这样做:

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);
}