lazyload jquery 回调函数
lazyload jquery callback function
我目前在延迟加载渲染图像时调用一个函数。这工作正常。我遇到的问题是我需要访问函数中的$(this)
。有没有办法将这些数据解析为函数?
小提琴 http://jsfiddle.net/DTcHh/19852/
$("img").lazyload({
load: equalizeHeights
});
function equalizeHeights()
{
//var classStr = '.'+$(this).parent('div').attr('class');
var classStr = '.my-wrapper';
var heights = $(classStr).map(function() {
return $(this).height();
}).get(),
maxHeight = Math.max.apply(null, heights);
$('.my-wrapper').height(maxHeight);
}
您可以使用
Function.prototype.bind()
来附加this
的值
例:
var obj= {
someData: "Hello"
}
function printSomeData() {
console.log(this.someData);
}
var customFunction = printSomeData.bind(obj);
customFunction(); //withing the function, "this" is obj, so it will print "Hello"
所以在你的情况下,我想你可以使用类似的东西
$("img").lazyload({
load: equalizeHeights.bind($("img"))
});
(不确定你想用的"这个"是什么)
您正在使用的插件实际上具有回调函数。 示例:
$("img.lazy").lazyload({
load : function(elements_left, settings) {
console.log(this, elements_left, settings);
$(document).trigger("something");
}
});
在您的情况下,您可以像这样使用它:
演示 http://jsfiddle.net/DTcHh/19856/
$("img").lazyload({
effect: "fadeIn",
threshold: 300,
failure_limit: 10,
load: function(elements_left, settings) {
equalizeHeights(this);
}
});
function equalizeHeights(ele)
{
var classStr = '.'+$(ele).parent('div').attr('class');
var heights = $(classStr).map(function() {
return $(this).height();
}).get(),
maxHeight = Math.max.apply(null, heights);
$('.my-wrapper').height(maxHeight);
}
我认为这就是您所追求的用例。
相关文章:
- 如何将一个JavaScript函数回调为多个函数
- Meteor:异步函数回调异常:onAfterAction
- 从类方法中的 ajax post 函数回调函数更改 javascript 类属性
- jQuery动画函数回调错误
- jquery在html属性中添加函数回调,以便在其他事件中调用
- jquery getjson 函数:回调返回错误的字符串
- postMessage - 多个 postMessage 事件/函数/回调
- 在 Promise 调用的错误函数回调后附加对象的用法是什么
- 单击事件后的 JavaScript 函数回调
- 设置超时函数回调静态变量
- Jquery UI 模式匿名函数回调以打开对话框
- 函数回调、局部变量和 chrome.storage.sync.get
- Jquery Ajax 没有拾取选项参数中指定的函数回调
- 如何在 javascript 中进行函数回调
- 用函数回调封装JavaScript
- jQuery JavaScript嵌套异步函数回调
- Node.js-匿名函数回调
- 函数回调超出范围
- php代码的Javascript函数回调
- 如何使用函数回调在更改时提交表单