Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检测阵列中多个元素的onPositionChanged_Javascript_Jquery_Arrays - Fatal编程技术网

Javascript 检测阵列中多个元素的onPositionChanged

Javascript 检测阵列中多个元素的onPositionChanged,javascript,jquery,arrays,Javascript,Jquery,Arrays,我正在尝试为我推入数组的多个元素使用.onPositionChanged。每次单击元素时,此数组都会不断更新 屏幕截图中的数组示例。 因此,我在这里试图实现的是,当用户单击一个元素时,我们将它推送到一个数组中,并希望不断检查位置的变化 这是我的职责 jQuery.fn.onPositionChanged = function (trigger, millis) { if (millis == null) millis = 10;

我正在尝试为我推入数组的多个元素使用.onPositionChanged。每次单击元素时,此数组都会不断更新

屏幕截图中的数组示例。

因此,我在这里试图实现的是,当用户单击一个元素时,我们将它推送到一个数组中,并希望不断检查位置的变化

这是我的职责

        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等)实现适当的事件侦听器: