单击按钮时,函数不会运行

时间:2018-04-19 14:25:21

标签: javascript jquery function

所以我有一个简单的JQuery代码:

var p = ctx.Person.First();
p.Name = "name updated";
ctx.SaveChanges();

当我点击ID为$(function () { var podatoci; var i; $(".front").on("load", init()); $("#remove").on("click", toggleRemove()); function init() { load(); } function load() { $.get("data.json", function (data, status) { podatoci = data; fill(); }) } function toggleRemove() { console.log("Yes"); $(".likse-dislikes").toggle(); } function fill() { for (i = 0; i < podatoci.length; i++) { $("#container").append("<div class='wrap'><img class='img' src='"+podatoci[i].url+"'/><div class='likes-dislikes'><img class='like' src='sources/like.png'/><img class='dislike' src='sources/dislike.png'/></div></div>"); } } }); 的按钮时,它会运行remove功能。

然而,当我运行网页时,当我点击按钮时我到达控制台时,该功能没有运行,而是只有在加载页面时它才会toggleRemove()。任何人都可以解释问题在哪里,我该如何解决?

提前谢谢!

4 个答案:

答案 0 :(得分:2)

这不符合你的想法:

$("#remove").on("click", toggleRemove());

在页面加载时执行toggleRemove 一次,并将处理程序设置为该函数的结果。 (这是undefined,因为该函数不返回任何内容。)

您希望将处理程序设置为函数本身,而不是函数的结果:

$("#remove").on("click", toggleRemove);

此外,如果在执行此代码后将您的元素添加到页面(我们不知道,虽然显示的代码意味着添加了一些动态元素),那么您需要委派事件:

$(document).on("click", "#remove", toggleRemove);

答案 1 :(得分:0)

您在删除功能上拼错了类名。

$( “的 likse -dislikes。”)切换();

将其更改为

$(".likes-dislikes").toggle();

答案 2 :(得分:0)

正如我在$(".front").on("load", init()); $("#remove").on("click", toggleRemove());看到的那样,当您注册事件监听器时,您可以及时呼叫您的回叫。试试这个:$(".front").on("load", init); $("#remove").on("click", toggleRemove);

答案 3 :(得分:-3)

您可以使用$scope.apply(handler)

$scope.apply(function () {
    // Angular is now aware that something might of changed
    $scope.changeThisForMe = true;
});