JQuery 中的更改事件起初不会触发
change event in JQuery doesn't trigger at first
我对jQuery很陌生。我正在将它用于我的一个WordPress插件。我有以下代码
<script type="text/javascript">
$(document).ready(function(){
$("#tmp-preview").html($("#title").val());
$("#title").change(function(){
$("#tmp-preview").html(getTweetPreview);
});
});
</script>
我希望每次 wordpress 新帖子页面的标题文本字段中的文本更改时,它都应该反映到div 中。但问题是,该事件不会在第一次更改时触发。我的意思是,如果用户第一次写标题并将焦点移到其他部分,则该标题不会在div 中更新。但话又说回来,如果他改变标题,新标题确实会反映出来!为什么会这样?
我想知道的另一件事是,如果我希望即使文本字段中的焦点没有丢失,标题文本也会在每个字符的更改时在div 中更新,我是否必须使用键控事件还是我可以以某种方式使用更改事件?
PS:问题不在于getTweetPreview()函数。我已经尝试使用一个简单的字符串,但仍然相同。我相信这是由于wordpress的其他一些函数调用而发生的,因为当标题完成编辑时,它会自动保存草稿。这可能是问题所在吗?如果是,如何解决?
这可能有效:
$("#title")
.on(
"input",
function () {
$("#tmp-preview").html(getTweetPreview);
}
);
如果其他所有方法都失败了,请尝试以下操作:
var updateTweetPreview = function () { // DRY
$("#tmp-preview").html(getTweetPreview);
};
$("#title")
.one( // sic.
"keydown",
function () {
updateTweetPreview();
$("#title").on("change", updateTweetPreview);
}
);
请使用on()
函数进行事件。 live()
从 jQuery 1.7 源代码开始被弃用。
至于实际问题,我认为WordPress的自动保存是在自动保存完成后使用ajax将数据副本加载到表单中。这将导致您的代码的内容被覆盖。尝试将其放入:
<script type="text/javascript">
$(document).ready(function(){
$("#tmp-preview").html($("#title").val());
$("#title").on("change", function(event){
event.stopImmediatePropagation()
$("#tmp-preview").html(getTweetPreview());
});
});
</script>
尝试使用 live 方法
$("#title").live('change', function(){
$("#tmp-preview").html(getTweetPreview);
});
有关实时的更多信息,请单击此处
gettweetpreview从何而来?因为这似乎每次都有效:
$("#tmp-preview").html($("#title").val());
$("#title").change(function(){
$("#tmp-preview").html($(this).val());
});
工作小提琴:http://jsfiddle.net/TNrPZ/
如果getTweetPreview
是一个函数,那么你应该调用它,而不仅仅是引用它。代码如下所示:
$("#title").live('change', function(){
$("#tmp-preview").html(getTweetPreview());
});
这里唯一的区别是在getTweetPreview
之后包含()
。
我已经看到这种情况发生了,修复它的方法是在元素上调用focus()
。 尝试调用以focus()
事件发生前完成的最后一件事。
jQuery
中的 keyup
事件来更新div 的内容,而不会丢失文本框中的焦点。
试试这段代码。
$("#tmp-preview").html($("#title").val());
$("#title").keyup(function(){
$("#tmp-preview").html($(this).val());
});
- 选择onclick事件jquery
- 用于多个类事件Jquery的单个函数
- 激发滑块's幻灯片事件jquery ui
- 设置重复按钮以注册点击事件jquery
- 保留当前点击事件jquery
- 启动/停止按键事件jquery
- 在事件jquery中插入一个函数
- 删除克隆的事件JQuery
- typeahead选择事件(jQuery)的动态绑定
- 触发自定义事件 Jquery
- 绑定两次或更多次的事件 jquery
- 单击时的事件 jquery 不起作用
- 在鼠标悬停事件 jquery 上显示边框的内容
- 同时触发两个鼠标事件 jQuery
- 焦点事件 jquery 组合框/自动完成
- 如何在页面中捕获“正文”和“正文”事件[Jquery].
- 将对象传递给事件 jQuery
- 验证“取消”上的字段 单击Onbeforeunload事件JQUERY
- 复选框单击事件 jQuery 不起作用
- 口述事件jquery顺序