【发布时间】:2017-01-08 22:41:54
【问题描述】:
所以问题是我有一个 html 元素,它在“data-”属性中有一个对象(通过 jQuery ofc 设置),我想听听该属性的变化。
我已经尝试了很多东西,比如在MutationObserverInit object 中设置几乎所有可能的组合值,但这些都没有帮助。
有人知道这是否可行吗?
$('#some-id').click( function() {
//$('#some-id').attr('title', 'some-title'); //this works
$('#some-id').data('foo', 'bar1'); //this don't
});
var functionCallBack = function(mutations) {
alert('something changed')
}
// select the target node
var target = document.getElementById("some-id");
// create an observer instance
var observer = new MutationObserver(functionCallBack);
// configuration of the observer:
var config = { subtree: true, childList: true , attributes: true};
// pass in the target node, as well as the observer options
observer.observe(target, config);
$('#some-id').data('foo', 'bar');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="some-id">HEY</div>
【问题讨论】:
-
请显示您所尝试的具体内容。当然可以用
MutationObserver监听data-的属性变化。 -
"set via jQuery" ...如果它是使用
data()方法设置的,它将不是一个属性。如果您需要帮助,请显示所有相关代码 -
@Xufox 我添加了一个 jsfiddle。
-
@charlietfl 我添加了一个 jsfiddle。那我该如何解决呢?最好的选择是什么?
-
使用这个:jsfiddle.net/u5Lcfayf/2 使用 data() 方法时,您设置的数据存储在一个随机命名的 (?) jQuery 对象中,MutationObserver 无法访问该对象(似乎)。
标签: javascript jquery dom mutation-observers