Javascript 选择选项是添加或删除事件
如何检测选项是否已从SELECT中添加或删除 我知道: 这个选择框由另一个js控制,我不能把自己的函数调用放进去Javascript 选择选项是添加或删除事件,javascript,jquery,Javascript,Jquery,如何检测选项是否已从SELECT中添加或删除 我知道: 这个选择框由另一个js控制,我不能把自己的函数调用放进去 我是否可以检测到该选项已被另一个js删除 尝试浏览尝试浏览如何修补元素上的append函数?例如: var obj = document.getElementById('#select'); obj.__appendChild = obj.appendChild; obj.appendChild = function(){ console.log('new option ad
我是否可以检测到该选项已被另一个js删除 尝试浏览尝试浏览如何修补元素上的append函数?例如:
var obj = document.getElementById('#select');
obj.__appendChild = obj.appendChild;
obj.appendChild = function(){
console.log('new option added');
obj.__appendChild.apply(obj, arguments);
}
如何修补元素上的append函数?例如:
var obj = document.getElementById('#select');
obj.__appendChild = obj.appendChild;
obj.appendChild = function(){
console.log('new option added');
obj.__appendChild.apply(obj, arguments);
}
您可以尝试调用给定select元素的检查函数,使用超时来定期检查
function periodicallyCheckSelect(){
var jSelect = $(this)
,opts = this.options
,prevLen = +jSelect.attr('data-previousLen') || opts.length
,isEq = false
,isAdded = false
,isRemoved = false
,state = '';
isEq = opts.length === prevLen;
isAdded = opts.length > prevLen;
isRemoved = opts.length < prevLen;
state = isEq ? 'no change'
: isAdded ? opts.length-prevLen + ' option(s) added'
: prevLen-opts.length+' option(s) removed';
jSelect.attr('data-previousLen',opts.length);
log(state+'<br>');
}
函数周期性检查选择(){
var jSelect=$(此)
,opts=this.options
,prevLen=+jSelect.attr('data-previousLen')| | opts.length
,isEq=false
,isAdded=false
,isRemoved=false
,state='';
isEq=opts.length==prevLen;
isAdded=opts.length>prevLen;
isRemoved=选择长度”);
}
这里是对这个想法的一种尝试。您可以尝试调用给定select元素的检查函数,使用超时来定期检查
function periodicallyCheckSelect(){
var jSelect = $(this)
,opts = this.options
,prevLen = +jSelect.attr('data-previousLen') || opts.length
,isEq = false
,isAdded = false
,isRemoved = false
,state = '';
isEq = opts.length === prevLen;
isAdded = opts.length > prevLen;
isRemoved = opts.length < prevLen;
state = isEq ? 'no change'
: isAdded ? opts.length-prevLen + ' option(s) added'
: prevLen-opts.length+' option(s) removed';
jSelect.attr('data-previousLen',opts.length);
log(state+'<br>');
}
函数周期性检查选择(){
var jSelect=$(此)
,opts=this.options
,prevLen=+jSelect.attr('data-previousLen')| | opts.length
,isEq=false
,isAdded=false
,isRemoved=false
,state='';
isEq=opts.length==prevLen;
isAdded=opts.length>prevLen;
isRemoved=选择长度”);
}
这是一个关于这个想法的游戏。你知道它们是如何添加或删除的吗?有一些抽象方法可以使用吗?它们是由这个jquery插件操作的,但我不想硬编码特定于站点的操作,因为我打算在其他系统上重用代码site@mgalesic我在下面发布了一个解决方案,可以避免轮询和机器上不必要的无响应/负载。您可能想测试一下。您知道它们是如何添加或删除的吗?有一些抽象方法可以使用吗?它们是由这个jquery插件操作的,但我不想硬编码特定于站点的操作,因为我打算在其他系统上重用代码site@mgalesic我在下面发布了一个解决方案,可以避免轮询和机器上不必要的无响应/负载。你可能想测试一下。我喜欢这个解决方案。我将检查页面上是否存在选择框,如果存在,则开始检查类似于此解决方案的更改。我将检查页面上是否存在选择框,如果存在,则开始检查changes@mgalesic上述解决方案避免了机器上的轮询和不必要的无响应/负载。您可能需要测试覆盖方法。@mgalesic上述解决方案避免了轮询和机器上不必要的无响应/负载。您可能需要测试重写方法。