Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.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 选择选项是添加或删除事件_Javascript_Jquery - Fatal编程技术网

Javascript 选择选项是添加或删除事件

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

如何检测选项是否已从SELECT中添加或删除

我知道:

这个选择框由另一个js控制,我不能把自己的函数调用放进去


我是否可以检测到该选项已被另一个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上述解决方案避免了轮询和机器上不必要的无响应/负载。您可能需要测试重写方法。