相关疑难解决方法(0)

为什么在页面加载时会立即触发click事件处理程序?

我正在玩一个我想要绑定到所有链接的函数.目前,该功能在页面加载时触发,而不是在我点击链接时触发.

这是我的代码.(showDiv()如果你需要看的话,我可以在函数中过去.)你能告诉我这里做错了什么或傻吗?

$(document).ready(function(){

    $('a.test').bind("click", showDiv());

});
Run Code Online (Sandbox Code Playgroud)

谢谢

jquery bind

38
推荐指数
3
解决办法
3万
查看次数

jQuery UI Alert对话框作为alert()的替代品

我正在使用alert()将验证错误输出回用户,因为我的设计没有提供其他任何内容,但我宁愿使用jQuery UI对话框作为我的消息的警告对话框.

由于错误不包含在(html)div中,我不知道该怎么做.通常你会分配dialog()到一个div说$("#divName").dialog()但我更需要一个alert_dialog("Custom message here")类似的东西或类似的东西.

有任何想法吗?

javascript jquery alert jquery-ui jquery-ui-dialog

24
推荐指数
3
解决办法
9万
查看次数

函数调用和函数引用有什么区别?

我有以下功能

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();)

我怎么知道我应该在哪里提供函数的引用,以及什么时候我应该实际调用它?

javascript reference function call

24
推荐指数
3
解决办法
6144
查看次数

如何在没有立即运行的情况下将参数传递给函数?

尝试拼凑一个有点动态的谷歌地图显示器时,我有点奇怪的问题.我在地图上覆盖了我想在点击时调用的功能.最初我有所有硬编码的东西,所以我有一个功能为每个叠加像这样:

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方法,但我觉得这不应该是我必须一起破解的东西......

javascript google-maps

17
推荐指数
3
解决办法
9198
查看次数

回调函数 - 使用括号

我是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 jquery

13
推荐指数
2
解决办法
1573
查看次数

为什么在Javascript事件处理函数中使用括号?

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)

但在这种情况下,不会调用警报.为什么?

javascript javascript-events

7
推荐指数
4
解决办法
2858
查看次数

Meteor:如何在collectionHandle.ready()为true后触发辅助函数的重新运行

这是我旧问题的新版本:

所以,多亏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文件: …

javascript collections publish-subscribe meteor

6
推荐指数
1
解决办法
3786
查看次数

JavaScript addEventListener 函数语法

我无法理解为什么事件侦听器的函数参数不只接受该函数。这是代码:

变量声明:

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 syntax function addeventlistener

3
推荐指数
1
解决办法
363
查看次数

image.Onload无法完成图像

这真让我抓狂.

我需要在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 canvas image javascript-events

2
推荐指数
1
解决办法
4318
查看次数

在JavaScript中调用带有括号和不带有括号的函数的区别

我正在处理一个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

1
推荐指数
1
解决办法
274
查看次数