如何在图像更改时调用jQuery函数?

时间:2012-04-25 08:35:48

标签: javascript jquery ruby-on-rails-3.1

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

用户可以通过模态窗口上传图像。我使用.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

2 个答案:

答案 0 :(得分:2)

不幸的是, jQueries Change仅适用于INPUT个元素。

您需要创建一个事件处理程序并触发一个触发器。 如果上传完成或您希望图像发生变化,您可以使用jQueries event and trigger system

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

$('#foo').trigger('customEvent');

答案 1 :(得分:0)

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

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

在IE中,您可以使用属性更改,这些更改将在这些更改中触发,但这只是IE。