11

有没有什么方法可以一键实现两个不同id元素的点击函数编码相同?

例如,我有两个带有 id 的链接元素,myFormsTabSubmitted 和 formStatusSubmitted。两个链接都具有相同的功能。当我单击这两个链接时,会显示相同的 div 元素(“提交”),而其他 div 被隐藏。

因此,与其编写两个单击函数,一个用于 myFormsTabSubmitted,另一个用于 formStatusSubmitted,我可以同时为这两个函数编写一个单击函数吗?喜欢

$('#myFormsTabSubmitted #formStatusSubmitted').click(function(){
            $('#allMyForms').hide();
            $('#draftedMyForms').hide();
            $('#submittedMyForms').show();
            $('#myFormsTab').find(".selected").removeClass();
            $('#myFormsTabSubmitted').addClass("selected");
        });
4

4 回答 4

22

只需在选择器中使用逗号分隔符:

$("#myFormsTabSubmitted, #formStatusSubmitted").click(function() {
  // do stuff
});
于 2009-09-04T06:59:08.097 回答
8

当然!对代码最简单的更改是添加一个逗号:

$('#myFormsTabSubmitted, #formStatusSubmitted').click(...);

您还可以存储对单击处理程序的引用并将其添加到多个选择中:

var myHandler = function () { ... };
$('#myFormsTabSubmitted').click(myHandler);
$('#formStatusSubmitted').click(myHandler);
于 2009-09-04T06:59:38.143 回答
1

显然,逗号是要走的路,但我想指出,任何语言的函数都是为您所要求的而设计的,即为多个项目编写一次代码。我认为 jquery 的文档给人的印象是函数必须遵循事件,而事实并非如此。你可以去:

function formSubmit() {
                        $('#allMyForms').hide();
                        $('#draftedMyForms').hide();
                        $('#submittedMyForms').show();
                        $('#myFormsTab').find(".selected").removeClass();
                        $('#myFormsTabSubmitted').addClass("selected");
}

$('#myFormsTabSubmitted, #formStatusSubmitted').click(formSubmit);

或者

$('#myFormsTabSubmitted').click(formSubmit);
$('#formStatusSubmitted').click(formSubmit);

这样,如果您想将该函数用于另一个事件,则不必将其挤进去,尤其是在它不是 onClick 的情况下。

于 2009-09-04T07:13:16.977 回答
0

当 jquery 使其对象像 $('#id') 时,它采用 $() 参数中传递的字符串并计算该字符串 jquery 返回对象。jQuery 返回的对象只是 jQuery 的另一个对象,它执行 jQuery 事件或属性的所有操作。所以当我们使用:

$('#myFormsTabSubmitted, #formStatusSubmitted').click();

jQuery 返回两个 JavaScript 对象的对象。这就是为什么它适用于这两个元素,或者您可以通过逗号分隔输入任意数量的元素。

于 2015-11-20T10:14:57.837 回答