在我更改了跨度内的文本后,我无法在跨度上触发jQuery的resize事件.
我正在使用AngularJS指令将事件处理程序应用于span元素:
angular.module("test.directives",[]) .directive("trackSize",["$parse",function($parse) { return function(scope,element,attrs) { function callback() { var size = { w: element.width(),h: element.height() }; scope[attrs.trackSize].call(scope,size); } element.on("resize",function() { console.log("resize"); scope.$apply(callback); }); callback(); }; }]);
但是当跨度内的文本发生变化时,我没有看到回调激发.如果相关:使用嵌入的AngularJS表达式更改文本.
我的实际(完整)代码片段可以在jsFiddle上看到:http://jsfiddle.net/KkctU/13/
解决方法
resize事件不适用于文档中的元素,如span.它只能在窗户上使用.
Here is a plugin that might help you.我没有使用它,但它似乎正好适合你.
但是,最后,在指令中设置一个监视器可能更好/更容易,无论绑定到它的任何东西,然后检查文本更改时高度和宽度是否已更改.就像一个想法:
app.directive('trackSize',function () { return function(scope,attrs) { var w = element.width(),h = element.height(); scope.$watch(attrs.trackSize,function(v) { element.text(v); var w2 = element.width(),h2 = element.height(); if(w != w2 || h != h2) { //TODO: do something here,the size has changed. } }); } });
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。