3

我正在尝试更改 JQuery 项目中的variable调用projectCounter,以便我不必div为每个项目重复每个内部的按钮。如何使所有功能都可以访问一项功能的更改?这是我到目前为止所拥有的:

var projectCounter = 1;

$('a').click(function() {
  function setValue() {
    var projectCounter = projectCounter + 1;
    alert(window.projectCounter);
  }
});

我也做了一个 JSfiddle:http: //jsfiddle.net/cPFRD/

4

7 回答 7

0

您的计数器在全局范围内,因此随处可见:

var projectCounter = 1;

$('a').click(function() {
  alert(projectCounter++);
});
于 2013-07-17T15:19:10.623 回答
0
var projectCounter = 1;

$('a').click(function() {
  function setValue() {
    projectCounter = projectCounter + 1;
    alert(window.projectCounter);
  }
});

您需要从设置值函数内部删除 var。您还应该将此函数移到 .click 事件之外,以便在需要时可以在其他位置使用它。

于 2013-07-17T15:20:26.130 回答
0

保留第一个var并删除函数内部的一个

var projectCounter = 1;
$('a').click(function() {
  function setValue() {
    projectCounter = projectCounter + 1;
    alert(window.projectCounter);
  }
});

您的setValue()函数永远不会在您发布的代码中运行。它只会在单击后定义(因此之前不可用),并且只有在单击之后才能调用/运行它。那是你要的吗?如果您希望projectCounter在单击时添加变量,请删除整个变量,function setValue()只保留其内容。

在本例中,当您运行setValue()projectCounter 时将为 2。您也可以使用 justprojectCounter++;来实现与projectCounter = projectCounter + 1;

于 2013-07-17T15:17:24.223 回答
0

即使在运行 javascript 后添加了 div>a,以下代码也将起作用。

> 小提琴示例 <

JavaScript

var counter = 0;

$('.container').on('click', 'div a', function () {
  counter++;
  alert(counter);
});

HTML

<div class="container">
  <div>
    <a>Increase Counter</a>
  </div>
</div>
于 2013-07-17T15:17:44.807 回答
0
var projectCounter = 1;

$('a').click(function() {
  setValue();//this actually calls the function and thus makes it happen
});

//defining/declaring a function, doesn't actually do anything until it is called
 function setValue() {
    projectCounter = projectCounter + 1;//no var keyword because we want to reference the existing variable, not declare a new one
    alert(window.projectCounter);
  }

这应该解决您的代码无法正常工作的问题。我没有声称这是最佳实践。

于 2013-07-17T15:18:10.463 回答
0
   var projectCounter = 1;

   function setValue() {
     projectCounter +=  1;
     alert(window.projectCounter);
   }   

   $('a').click(function(e) {
      e.preventDefault();
      setValue();
   });

我认为这就是你想要完成的。现在您可以添加其他事件来调用setValue()。我必须说你应该更具体地说a明你所指的标签。

于 2013-07-17T15:18:30.870 回答
0

当你var在一个函数中声明时,你明确地给它一个本地范围。如果在使用变量时离开var,它总是被认为是全局的。因此,在您的情况下,您var在函数内部使用,这为其提供了该函数的本地范围。

最后,您实际上并没有在任何地方调用 setValue() 。所以这个函数实际上并没有执行。你是这个意思吗?

var projectCounter = 1;

$('a').click(function() {
    projectCounter = projectCounter + 1;
    alert(window.projectCounter);
});
于 2013-07-17T15:23:08.283 回答