gpt4 book ai didi

javascript - 关于javascript的基本问题

转载 作者:行者123 更新时间:2023-12-02 18:38:45 26 4
gpt4 key购买 nike

请看一下_form.html.erb中的以下代码:

<script>
function typeCatch(){
$.post("<%= update_readers_link_essay_path(@essay) %>");
$(this).off("keypress", typeCatch);//remove handler
}

$(function(){
("form#new_revision").on("keypress", typeCatch);
});
</script>

当用户开始在表单中输入内容时,应触发 ajax 请求并更新读者列表。但是,当我开始在表单中输入并且我正在尝试调试此问题时,不会触发发布请求。

由于我对 javacsript 还不太熟悉,如果您能帮助我澄清一些事情,我将不胜感激。

a.对于第二部分,我可以这样做

$("form#new_revision").on("keypress", typeCatch);

不用 $(function() {} 包装它?

b.我做错了什么吗?由于 ajax 调用没有被触发,我一定在第二部分犯了错误?

其他问题

my_personal_chat.js(在 app/assets/javascripts 管道中)

$(function() {
var pusher = new Pusher('app_key');
var channel = pusher.subscribe('presence-my-chat');

channel.bind('pusher:subscription_succeeded', function(members) {
$('#online_users').empty();
members.each(function(member){
addMember(member);
});
... other functions ...
});

这就是我使用 Pusher 实现聊天功能的方式。由于该 channel 是私有(private)的,因此每次调用 var channel 时,都会调用对 POST/pusher/auth 的 ajax 调用。

我发现每次导航到不同的页面时,即使它不是聊天功能所在的页面,也会调用 POST/pusher/auth 。基本上,每次加载 my_personal_chat.js 时,都会不必要地调用 ajax 调用。

问题:如何防止这种情况发生? my_personal_chat.js 仅应在我访问 myapp.com/chat 时加载。我应该从 javascript 文件中取出所有内容并将其放入 chat.html.erb 中吗?这是传统的做法吗?

回答我自己的问题:我将代码从 my_personal_chat.js 移至 chat.js.coffee 并删除了 my_personal_chat .js。现在,只有当用户转到聊天页面时才会加载 JavaScript。

最佳答案

a.还有其他选择,但将代码包装在 $(function() {}) 中是确保在所有元素加载到 DOM 之前不会执行代码的最佳方法之一。这是一个 jQuery 功能。

b. ("form#new_revision").on("keypress", typeCatch); 应该是 $("form#new_revision").on("keypress", typeCatch); >。您缺少开头的 $

关于javascript - 关于javascript的基本问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17039080/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com