我正在玩一个我想要绑定到所有链接的函数.目前,该功能在页面加载时触发,而不是在我点击链接时触发.
这是我的代码.(showDiv()如果你需要看的话,我可以在函数中过去.)你能告诉我这里做错了什么或傻吗?
$(document).ready(function(){
$('a.test').bind("click", showDiv());
});
Run Code Online (Sandbox Code Playgroud)
谢谢
我正在使用alert()将验证错误输出回用户,因为我的设计没有提供其他任何内容,但我宁愿使用jQuery UI对话框作为我的消息的警告对话框.
由于错误不包含在(html)div中,我不知道该怎么做.通常你会分配dialog()到一个div说$("#divName").dialog()但我更需要一个alert_dialog("Custom message here")类似的东西或类似的东西.
有任何想法吗?
我有以下功能
function hello() {
alert("hi!");
}
Run Code Online (Sandbox Code Playgroud)
拿这段代码:
var elem = document.getElementById("btn");
elem.onclick = hello;
Run Code Online (Sandbox Code Playgroud)
我的问题可能有点难以理解,所以请耐心看看:这段代码与普通调用有什么区别,或者是什么使得这段代码需要引用函数变量而不是常规调用?(hello();)
我怎么知道我应该在哪里提供函数的引用,以及什么时候我应该实际调用它?
尝试拼凑一个有点动态的谷歌地图显示器时,我有点奇怪的问题.我在地图上覆盖了我想在点击时调用的功能.最初我有所有硬编码的东西,所以我有一个功能为每个叠加像这样:
google.maps.event.addListener(southEast, 'click', showSouth);
function showSouth() {
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
这没有问题,但后来我使整个页面更加动态,所以我决定制作一个能传递ID然后根据它显示的功能,这就是我觉得应该最初设置它的方式.我将代码更改为更像这样:
google.maps.event.addListener(southEast, 'click', showArea(1));
function showArea(id) {
// do stuff based on that id
}
Run Code Online (Sandbox Code Playgroud)
该功能有效,但问题是它会在页面加载时立即调用.经过研究我已经了解到,当你用括号调用一个函数时,会立即调用该函数,然后引用它的返回值.资源
所以现在我有点担心如何将该ID传递给函数而不立即调用该函数.我发现了一些可能有用的hacky方法,但我觉得这不应该是我必须一起破解的东西......
我是jQuery的新手,对使用(或不使用)带有回调函数的括号感到困惑.说我有一个功能:
function cb() {
// do something
}
Run Code Online (Sandbox Code Playgroud)
现在有什么区别:
$("p").hide(1000, cb);
Run Code Online (Sandbox Code Playgroud)
和
$("p").hide(1000, cb());
Run Code Online (Sandbox Code Playgroud)
它是做当执行CB功能?如果有人能用最简单的术语向我解释这一点,那就太好了.
Javascript大师,看看这段代码:
<button onclick="handler()">ClickMe</button>
<script>
function handler() {
alert("clicked");
}
</script>
Run Code Online (Sandbox Code Playgroud)
为什么onclick事件应该用()onclick ="handler()"分配给handler?在这种情况下,会调用警报.但是根据描述为类似问题的回答的逻辑/sf/answers/227293111/ onclick分配给函数处理程序的结果,而不是自己运行.我相信指定onclick功能它应该是这样的
onclick="handler",
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,不会调用警报.为什么?
这是我旧问题的新版本:
所以,多亏Tom Coleman的帮助,我终于想出了如何正确检查订阅是否准备就绪().
我目前的代码结构如下所示:
/client/app.js:
eventsHandle = null;
groupsHandle = null;
// ...
// First Deps.autorun():
// Does not depend on any Session var, should just run every time
Deps.autorun(function() {
eventsHandle = Meteor.subscribe("events", function() {
console.log('Deps.autorun(): Events loaded');
});
});
// Second Deps.autorun():
// contains all subscriptions which are dependent on my Session var "ehash"
Deps.autorun(function() {
if(Session.get('ehash'))
groupsHandle = Meteor.subscribe("groups", Session.get('ehash'), function() {
console.log('Deps.autorun(): Groups loaded with ehash: ' + Session.get('ehash'));
});
});
// ...
Run Code Online (Sandbox Code Playgroud)
然后我查看了名为的文件夹中所有模板内容的特定.js和.html文件: …
我无法理解为什么事件侦听器的函数参数不只接受该函数。这是代码:
变量声明:
var spanJS = document.getElementById("spanJS")
var txtPlayers = document.getElementById("ContentPlaceHolder1_txtPlayers")
var txtAmount = document.getElementById("ContentPlaceHolder1_txtAmount")
Run Code Online (Sandbox Code Playgroud)
然后关联事件监听器:
txtAmount.addEventListener("keyup", UpdateTotals())
txtPlayers.addEventListener("keyup", UpdateTotals())
Run Code Online (Sandbox Code Playgroud)
然后函数:
function UpdateTotals() {
...
}
Run Code Online (Sandbox Code Playgroud)
这是整个代码。问题是,当我运行它时,它执行 UpdateTotals() 而没有任何 keyup 事件,并且侦听器不起作用。
如果我进行以下更改,它将按预期工作:
txtAmount.addEventListener("keyup", function () {
UpdateTotals()
})
txtPlayers.addEventListener("keyup", function () {
UpdateTotals()
})
Run Code Online (Sandbox Code Playgroud)
谁能解释一下为什么我不能只输入函数的名称,而必须将其“子化”到另一个函数中?
这真让我抓狂.
我需要在Javascript中加载一组图像,但我想确保在开始绘制之前加载所有图像.所以,我忙 - 等待每个图像onLoad事件被调用.首先,我创建图像并设置它们的源和onload函数:
// Load images from names
for (i = 0; i < this.nImages; i++) {
this.imagesArray[i] = new Image();
this.imagesArray[i].onload = this.onLoad(i);
this.imagesArray[i].src = images[i];
}
Run Code Online (Sandbox Code Playgroud)
这是onLoad函数,我正在开发的类的成员(前两个步骤在构造函数中):
MyClass.prototype.onLoad = function (nimage) {
console.log ("Image completed? ", nimage, " ", this.imagesArray[nimage].complete);
this.imagesLoaded++;
Run Code Online (Sandbox Code Playgroud)
}
然后我忙等待所有的onLoad函数来递增计数器(再次,在构造函数中):
while (this.imagesLoaded < this.nImages) {
// This is busy wait, and I don't like it.
continue;
}
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.但是当我尝试用我的drawClass在HTMl5画布上绘制时:
MyClass.prototype.refresh = function () {
// Gets one of the images in the range
var imageNum …Run Code Online (Sandbox Code Playgroud) 我正在处理一个JavaScript文件上传事件。我有以下初始化程序和以下函数:
初始化器
$('#s3-uploader').S3Uploader({
allow_multiple_files: false,
before_add: progressBar.show,
progress_bar_target: $('.upload-progress-bar'),
remove_completed_progress_bar: false
}).bind("s3_upload_complete", function(e, content) {
console.log(content);
});
Run Code Online (Sandbox Code Playgroud)
功能
var progressBar = {
show: function() {
$('.upload-progress-bar').show();
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
在初始化程序中,我注意到如果执行
before_add: progressBar.showVS before_add: progressBar.show()。使用括号,即使将其绑定到该before_add选项也将被调用一次,而没有括号则不会被调用。
我观察到的行为是否有解释?
javascript ×9
jquery ×3
function ×2
alert ×1
bind ×1
call ×1
canvas ×1
collections ×1
google-maps ×1
image ×1
jquery-ui ×1
meteor ×1
reference ×1
syntax ×1