jQuery技术

jquery 如何监听div内容的变化

字号+ 作者:H5之家 来源:H5之家 2015-09-20 15:53 我要评论( )

我们做电子商务,javascript框架采用的是jQuery,在开发过程中遇到了上面标题列出的问题:如何监听div内容的变化。 先给出最终代码(后续进行相关分析): var title = $(b.facility);var title = $('#title');//the element I want to monitortitle.bind('DO

我们做电子商务,javascript框架采用的是jQuery,在开发过程中遇到了上面标题列出的问题:如何监听div内容的变化。

先给出最终代码(后续进行相关分析):

var title = $("b.facility"); var title = $('#title');//the element I want to monitor title.bind('DOMNodeInserted', function(e) { alert('element now contains: ' + $(e.target).html()); });

解决问题的思路如下:

我们先回顾一下jQuery事件中的change()方法定义和用法:

当元素的值发生改变时,会发生 change 事件。

该事件仅适用于文本域(text field),以及 textarea 和 select 元素。

change() 函数触发 change 事件,或规定当发生 change 事件时运行的函数。

注释:当用于 select 元素时,change 事件会在选择某个选项时发生。当用于 text field 或 text area 时,该事件会在元素失去焦点时发生。

但是问题出现了关于div内容的改变change方法中只字不提,我们如何处理那?

后续百度关键词: jquery div 内容发生变化:无果;

继续,bing关键词:jquery how to listen div change 找到一篇相关文档
粗略的明白是采用自定义事件的方式去处理问题,采纳代码如下:

$('#laneconfigdisplay').bind('contentchanged', function() { // do something after the div content has changed alert('woo'); }); // 这样会调用上面的函数 $('#laneconfigdisplay').trigger('contentchanged');

但是contentchanged是什么内容没有说明,继续追溯
bing关键词:jquery how to listen div change 找到一篇相关文档
继续,bing关键词:jquery contentchanged 找到一篇相关文档
这篇文章详细说明了contentchanged内容定义,采纳代码如下:

jQuery.fn.watch = function( id, fn ) { return this.each(function(){ var self = this; var oldVal = self[id]; $(self).data( 'watch_timer', setInterval(function(){ if (self[id] !== oldVal) { fn.call(self, id, oldVal, self[id]); oldVal = self[id]; } }, 100) ); }); return self; }; jQuery.fn.unwatch = function( id ) { return this.each(function(){ clearInterval( $(this).data('watch_timer') ); }); };

创建自定义事件

jQuery.fn.valuechange = function(fn) { return this.bind('valuechange', fn); }; jQuery.event.special.valuechange = { setup: function() { jQuery(this).watch('value', function(){ jQuery.event.handle.call(this, {type:'valuechange'}); }); }, teardown: function() { jQuery(this).unwatch('value'); } };

貌似这样的解决是完美的但是后续再继续查看到时候,发现有更简洁的方式,代码如下:

var title = $("b.facility"); var title = $('#title');//the element I want to monitor title.bind('DOMNodeInserted', function(e) { alert('element now contains: ' + $(e.target).html()); });

感觉这应该是我需要代码,do it !fine

除非注明,文章为IT热血青年原创,欢迎转载!转载请注明本文地址,谢谢。
本文地址:

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 7个有用的jQuery小技巧

    7个有用的jQuery小技巧

    2016-02-26 13:02

  • jQuery制作select双向选择列表

    jQuery制作select双向选择列表

    2016-02-26 11:00

  • 全面详细的jQuery常见开发技巧手册

    全面详细的jQuery常见开发技巧手册

    2016-02-26 10:02

  • 强大的jQuery移动插件Top 10

    强大的jQuery移动插件Top 10

    2016-02-25 09:05

网友点评
c