使用jquery检测选择字段的选项值的更改

时间:2015-09-30 12:39:38

标签: javascript jquery javascript-events oracle-apex

是否有一种事件绑定方式可以识别选择字段的选项何时被某些不同的,外部的,不可编辑的JavaScript更改?

只是为了澄清:我不想听取价值变化,我想听听DOM结构的变化

2 个答案:

答案 0 :(得分:3)

你试过这个吗?

这只会告诉您结构是否有任何变化。

$(".selectBox").bind("DOMSubtreeModified", function() 
{
    $(".message").append("Structure changed<br>");
});


$("#add").click(function() 
{
    $(".selectBox").append("<option>Added</option>");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>

<button id="add">Add to Select</button>


<select class="selectBox">


</select>


<div class="message"></div>

如果您正在寻找类似数据或属性的内容。那你可能会找MutationObserver

之类的东西
  

MutationObserver为开发人员提供了一种对DOM中的更改做出反应的方法。它被设计为DOM3事件规范中定义的Mutation事件的替代。

答案 1 :(得分:1)

寻找&#34; DOM变化&#34;切割得太宽泛了。正如您的评论所指出的那样,您正在使用选择列表中的级联LOV父项功能。这会将选择列表转换为可刷新的项目,这意味着当其中一个父项更改时,它将再次获取其选项集。这次刷新基本上是一个AJAX调用 由于这都是内置的,因此您可以非常简单地使用将事件处理程序绑定到&#34;刷新后的本机功能。这个项目。无需开始收听dom事件。 &#34;刷新后#34;是解决这个问题的标准方法。

两个选项:

  • 使用一个动态动作来响应&#34; After Refresh&#34;事件 dynamic action creation with after refresh
  • 绑定到&#34; apexafterrefresh&#34;带有eventlistener或jQuery的事件

    $("#P1_SELECT_LIST").on("apexafterrefresh", function(){ ... });
    

从那以后你可以做任何你想做的事情,但这肯定是要走的路。