Jquery - 如果元素的值为“Active”,则运行一个函数

时间:2015-01-27 21:32:57

标签: javascript jquery

我有一个类reflection的按钮。加载文档后,我将该元素的值设置为disabled。我想仅在值设置为active时才运行函数。

$(document).ready(function() {
  $(".reflection").val("Disabled");

  $(".reflection").click(function () {
    $(".reflection").val("Active");
  });

  if ($(".reflection").val("Active") {
    if(e.clientX < width / 2) {
      croquis.fillLayerRect(colors[Math.floor(Math.random() * 5)], (e.clientX + (2 * (width/2 - e.clientX))), e.clientY, brush.getSize(), brush.getSize());
    }
    else {
      croquis.fillLayerRect(colors[Math.floor(Math.random() * 5)], (e.clientX - (2 * (e.clientX - width/2))), e.clientY, brush.getSize(), brush.getSize());
    }
  }
});

刷新浏览器时,会立即激活if($(".reflection").val("Active")功能。即使我将值设置为disabled,该功能仍然有效。我也没有点击.relection

2 个答案:

答案 0 :(得分:0)

这部分代码是错误的(不只是缺少右括号):

if ($(".reflection").val("Active")) {

它实际上将值设置为&#34; Active&#34;和整个条件始终评估为true 。因为val()方法返回原始元素对象,这是真实的,这就是为什么你的if语句中的代码总是被执行,以及不需要将值设置为&#34; Active&#34;。

你需要这个:

if ($(".reflection").val() === "Active") {

答案 1 :(得分:0)

您的代码只会在页面加载时触发,因为您为活动执行的检查不会被其他任何内容触发。

如果您尝试这样的事情:

$(document).ready(function() {
  $(".reflection").val("Disabled");

  $(".reflection").click(function () {
    $(".reflection").val("Active");
    $(document).trigger('customTrigger');
  });


  $(document).on('customTrigger ready', function() {
    if ($(".reflection").val() == 'Active') {
      if(e.clientX < width / 2) {
        croquis.fillLayerRect(colors[Math.floor(Math.random() * 5)], (e.clientX + (2 * (width/2 - e.clientX))), e.clientY, brush.getSize(), brush.getSize());
      }
      else {
        croquis.fillLayerRect(colors[Math.floor(Math.random() * 5)], (e.clientX - (2 * (e.clientX - width/2))), e.clientY, brush.getSize(), brush.getSize());
      }
    }
  });
});

然后检查将在文档准备就绪时触发,也会在单击.reflection时触发。

编辑:我猜这个按钮是<input type="button">,因为<button>元素没有值属性。