Javascript 检测阵列中多个元素的onPositionChanged
我正在尝试为我推入数组的多个元素使用.onPositionChanged。每次单击元素时,此数组都会不断更新 屏幕截图中的数组示例。 因此,我在这里试图实现的是,当用户单击一个元素时,我们将它推送到一个数组中,并希望不断检查位置的变化 这是我的职责Javascript 检测阵列中多个元素的onPositionChanged,javascript,jquery,arrays,Javascript,Jquery,Arrays,我正在尝试为我推入数组的多个元素使用.onPositionChanged。每次单击元素时,此数组都会不断更新 屏幕截图中的数组示例。 因此,我在这里试图实现的是,当用户单击一个元素时,我们将它推送到一个数组中,并希望不断检查位置的变化 这是我的职责 jQuery.fn.onPositionChanged = function (trigger, millis) { if (millis == null) millis = 10;
jQuery.fn.onPositionChanged = function (trigger, millis) {
if (millis == null) millis = 10;
var o = $(this[0]); // our jquery object
if (o.length < 1) return o;
var lastPos = null;
var lastOff = null;
setInterval(function () {
if (o == null || o.length < 1) return o; // abort if element is non existend eny more
if (lastPos == null) lastPos = o.position();
if (lastOff == null) lastOff = o.offset();
var newPos = o.position();
var newOff = o.offset();
if (lastPos.top != newPos.top || lastPos.left != newPos.left) {
$(this).trigger('onPositionChanged', {
lastPos: lastPos,
newPos: newPos
});
if (typeof (trigger) == "function") trigger(lastPos, newPos);
lastPos = o.position();
}
if (lastOff.top != newOff.top || lastOff.left != newOff.left) {
$(this).trigger('onOffsetChanged', {
lastOff: lastOff,
newOff: newOff
});
if (typeof (trigger) == "function") trigger(lastOff, newOff);
lastOff = o.offset();
}
}, millis);
return o;
};
$(ele).onPositionChanged(function(e) {
ele.offset().left
});
jQuery.fn.onPositionChanged=函数(触发器,毫秒){
如果(millis==null)millis=10;
var o=$(此[0]);//我们的jquery对象
如果(o.length<1)返回o;
var lastPos=null;
var lastOff=null;
setInterval(函数(){
if(o==null | | o.length<1)返回o;//如果元素不存在则中止
如果(lastPos==null)lastPos=o.position();
如果(lastOff==null)lastOff=o.offset();
var newPos=o.position();
var newOff=o.offset();
if(lastPos.top!=newPos.top | | lastPos.left!=newPos.left){
$(this).trigger('onPositionChanged'{
lastPos:lastPos,
newPos:newPos
});
if(类型(触发器)=“功能”)触发器(lastPos、newPos);
lastPos=o.位置();
}
if(lastOff.top!=newOff.top | | lastOff.left!=newOff.left){
$(this).trigger('onOffsetChanged'{
拉斯托夫:拉斯托夫,
纽奥夫:纽奥夫
});
if(类型(触发器)=“功能”)触发器(lastOff、newOff);
lastOff=o.偏移量();
}
},毫);
返回o;
};
$(ele).onPositionChanged(函数(e){
ele.offset()左
});
这是单个特定元素的工作示例。但我想实现上述目标
我挣扎了很长时间,我希望任何人都能帮助我
在advanced(高级)中感谢您,不要使用计时器来监视更改,而是使用标准的观察者模式来通知阵列中的更改 下面的答案给出了ObservableArray的实现(第2节)。要在代码中使用它,请将数组实例替换为ObservalArray实例,并为所需的事件(itemadded、itemset、itemremoved等)实现适当的事件侦听器: