var和函数以错误的顺序工作

时间:2015-09-02 10:27:59

标签: javascript jquery html

我尝试使用下面的代码实现的是,当单击生成按钮并且检查了html变量然后执行某些操作时 - 在这种情况下加载警报但是从此fiddle你可以看到它以完全相反的方式工作。

为什么这样做?以及如何解决它我的工作方式也是如此 - 你可以看到我也必须为另一个复选框做这件事:)

HTML:

    <div class="form-group formGroup10">
            <div class="checkbox">
                <label><input id="html" type="checkbox" value="">
                <strong>Download as a HTML file</strong></label>
                <br/>
            <label><input id="showInline" type="checkbox" value="">
            <strong>Show as HTML Code</strong></label>
            </div>
            <br/>
            <button type="button" id="generate" class="btn btn-primary formButton10">Generate</button>
        </div>

JS:

var html     = $('#showInline');
    var file     = $('#html');

    $("#generate").click(function(){
        html.change(function(){
        if($(this).is(':checked'))
        {
            alert('hello');
        }

        });
    });

2 个答案:

答案 0 :(得分:4)

无需更改活动。你可以删除它来工作。

使用这种方式:

(defun expand-to-indentation ()
  "Select surrounding lines with current indentation."
  (interactive)
  (let ((indentation (current-indentation)))
    (if (= indentation 0)
        (mark-whole-buffer)
      (while (<= indentation (current-indentation))
        (forward-line -1))
      (forward-line 1)
      (push-mark (point) nil t)
      (while (<= indentation (current-indentation))
        (forward-line 1))   
      (backward-char))))

你在做什么:

您正在约束$("#generate").click(function(){ //html.change(function(){ if(html.is(':checked')) { alert('hello'); } //}); }); 事件中的change事件。因此,当您第一次单击它时,它会在click上注册更改事件。

我也必须为另一个复选框执行此操作

为此,您可以将其简化为:

html

答案 1 :(得分:1)

您每次点击生成时都会绑定更改事件。你应该改为

var html     = $('#showInline');
var file     = $('#html');
html.change(function(){
   if($(this).is(':checked'))
   {
    alert('hello');
   }
});

$("#generate").click(function(){
   html.trigger('change')
});