Jquery了解onclick如何更改工作?

时间:2014-04-21 21:57:16

标签: jquery onclick html-form

这是一个简单的jquery代码:

$(document).ready(function() {


/*$(function() {
    // Sets the value of the submit_button_type field if the 'Submit & Add
    // Another button is clicked.
    $('#submit-id-submit_and_add').click(function() {
        $('#id_submit_button_type').val('submit_and_add');
    });
}); */

$('#submit-id-submit_and_add').click(function() {
        $('#id_submit_button_type').val('submit_and_add');
    });
}

以上两者有什么区别? 在第一个中,我将click处理程序包含在函数内部 第二,我在全球范围内定义了它。

第一个函数会在文档准备就绪时运行两次,而其他函数在单击按钮时运行

全球定义的第二种方式,它是如何工作的。 它只会在点击发生时进行评估

假设我的html是

<input id="id_submit_button_type" name="submit_button_type" type="hidden" />
<input type="submit" name="submit_and_add" value="Save &amp; Add Another" id="submit-id-submit_and_add"/>

我想在输入元素中附加onclick,如

<input type="submit" name="submit_and_add" value="Save &amp; Add Another" id="submit-id-submit_and_add" onclick=somefunction/>

some函数将在此处设置input元素的值。我如何在我的js文件中定义一些函数,以便我可以在这里调用它。应该包含在$(document).ready(function(){}中 比如

var somefunction=$('#submit-id-submit_and_add').click(function() {
            $('#id_submit_button_type').val('submit_and_add');
        });
    }

我是Jquery的初学者。所以这些疑惑可能是愚蠢的。 谢谢你的耐心

1 个答案:

答案 0 :(得分:2)

$(function() {
    <code>
});

简称:

$(document).ready(function() {
    <code>
});

所以第一个版本说在文档准备好后绑定处理程序。但由于所有代码都在另一个文档就绪处理程序中,它已经在等待该事件,所以额外的包装器没有任何效果。所以这两个版本是等价的。

如果你想要一个能够完成点击处理程序功能的命名函数,你可以这样做:

function somefunction() {
    $('#id_submit_button_type').val('submit_and_add');
}

$(document).ready(function() {
    $('#submit-id-submit_and_add').click(somefunction);
});