2

我有一个包含图像和文字的页面。

用户可以通过模态窗口上传图像。我使用 .js.erb 将页面上的图片替换为用户上传的图片。

$('#mailing_body').contents().find("[data-edit-img='<%=escape_javascript(@user_image.location)%>']").attr('src', '<%=escape_javascript(@user_image.image.url(:medium))%>');

现在我想要一个 jquery 函数在页面上的图像发生变化时触发。

我在我的 js 文件中尝试了以下内容:

  $("#mailing_body").contents().find("[data-edit-img='header']").live('change',function(){
      alert('change');
  });

但它不起作用。我究竟做错了什么?

我正在使用 Ruby 1.9、Rails 3.2.2 jquery1.7.2

4

2 回答 2

2

不幸的是, jQueryChange仅适用于INPUT元素。

您需要做的是创建一个事件处理程序并触发一个触发器。每当上传完成或您希望图像更改时,您都可以使用jQueries 事件和触发系统

$('#foo').bind('customEvent', function() {
      alert($(this).text());
});

$('#foo').trigger('customEvent');
于 2012-04-25T08:46:54.820 回答
0

Change 是一个事件,只有当它们的值发生变化时才会在输入元素上触发。如果属性发生更改,它不会被触发。你想要的是观察属性变化的东西。这是一个解释如何实现这些事情的链接,基本上它只是使用超时来定期检查属性是否已更改。

http://darcyclarke.me/development/detect-attribute-changes-with-jquery/

在 IE 中,您可以使用将在这些更改时触发的 propertychange,但这仅适用于 IE。

于 2012-04-25T08:40:47.907 回答