Var和function的工作顺序错误

var and function working in the wrong order

本文关键字:顺序 错误 工作 function Var      更新时间:2023-09-26

我试图用下面的代码实现的是,当生成按钮被点击,如果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');
        }
        });
    });

不需要更改事件。你可以把它拆下来。

使用方法:

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

你在做什么:

change事件绑定到click事件。因此,当您第一次单击它时,它会在html上注册更改事件。


对于另一个复选框我也要这样做

可以简化为:

$("#generate").click(function(){
    if($(this).closest('.form-group').find('input[type="checkbox"]:checked').attr('id') === "showInline")
    {
        alert('showInline');
    }else{
        alert('html');
    }
});

每次点击生成时都绑定一个更改事件。你应该改成

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