我在jQuery中使用$ .change时遇到了一些问题。
HTML
<button class="btn">Reset</button>
<p id="chg" class="change">Click Me</p>
<div class="onchange"></div>
JS
$('.btn').on('click', function() {
$('.change').text('Click Me');
$('.onchange').text('');
});
$('.change').on('click', function() {
$('.change').text('Nearly There');
});
$('.change').on('change', function() {
$('.onchange').text("Nice One");
});
以下是Codepen
的链接基本上应该发生的是当点击“Click Me”时,文本将变为“Nearly There”,然后在“Nice One”出现在下面后直接显示。
然而,这没有发生,我已经尝试了两个
$('.change').on('change', function() {});
$('.change').change(function() {});
并且都不起作用。
注意 我提供的代码是我的测试代码,并且与我正在尝试实现的内容相关。
更新 我不知道.change只适用于表单控件,这可以解释为什么它不起作用。
解决方案 CreMedian - 建议我寻找的解决方案。
$('.change').on('DOMSubtreeModified', function() { });
我已更新CodePen以供将来参考。
答案 0 :(得分:2)
$('.change').on('change', function() {
在您的示例中,.change
是一个div,而div在点击时不会引发更改事件。
您可能只想更新click
事件
$('.btn').on('click', function() {
$('.change').text('Click Me');
$('.onchange').text('');
});
$('.change').on('click', function() {
$('.change').text('Nearly There');
$('.onchange').text("Nice One");
});
答案 1 :(得分:2)
如评论中所示,.change()
事件不适用于div元素。
获得相同效果的一种方法是使用以下代码:
$('.change').bind("DOMSubtreeModified",function(){
//action you want when the '.change' object changes
});
Javascript MutationEvent
不受广泛支持,因此在生产代码中实现此功能时要小心。
答案 2 :(得分:1)
尝试DOMSubtreeModified
事件。
$('.btn').on('click', function() {
$('.change').text('Click Me');
$('.onchange').text('');
});
$('.change').on('click', function() {
$('.change').text('Nearly There');
});
$('.change').on('DOMSubtreeModified', function() {
$('.onchange').text("Nice One");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<button class="btn">Reset</button>
<p id="chg" class="change">Click Me</p>
<div class="onchange"></div>
注意: IE8及更旧版本不支持。
中的演示答案 3 :(得分:0)
这样做
$('.change').text('Nearly There').trigger('change');
例如
$('.btn').on('click', function() {
$('.change').text('Click Me');
$('.onchange').text('');
});
$('.change').on('click', function() {
$('.change').text('Nearly There').trigger('change');
});
$('.change').on('change', function() {
$('.onchange').text("Nice One");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<button class="btn">Reset</button>
<p id="chg" class="change">Click Me</p>
<div class="onchange"></div>
答案 4 :(得分:0)
浏览器仅针对change
,textbox
和check/radio box
触发select list
个事件 - 所有表单元素。当您的<div>
或<p>
内的内容发生变化时,浏览器不会通知您的javascript。因此,听众.on('change'
不会被激怒。
以下是引发事件的元素的简短列表:
以下是有关此事件的更多信息:Mozilla MDN onchange