如何重构 jquery 函数以将选择器和元素 id 作为参数传递到函数中



我有jquery函数,可以根据表单所在的div元素控制选择表单中的哪些复选框。 var selectedObj = true;位于 document.ready()

$('#selectAllEntities').click(function (event) {
    if (selectedObj == true) {
        $('#selectAllEntities').text('Unselect All');
        $(':checkbox', '#myentities').each(function () {
            this.checked = true;
        });
        selectedObj = false;
    }
    else {
        $('#selectAllEntities').text('Select All');
        $(':checkbox', '#myentities').each(function () {
            this.checked = false;
        });
        selectedObj = true;
    }
});

选择器和div 元素 (#myentities) 是函数中唯一会更改的两个元素,我真的很想把它分解出来,这样我就可以重用这个函数而不是每次重写它。

我卡住的地方是将选择器作为参数传递。由于样式的 css 继承,我无法将该类用作选择器

<div id="myentities" class="rm_RoleColumn">
                <p>
                    Select the entities that this role can view</p>
                <a id="selectAllEntities" class="am_Button floatLeft">Select All</a>
                <hr class="hrNoColor" />
                <div>
                    <asp:Panel ID="pnl_EntityList" runat="server" />
                </div>
            </div>

该面板是显示复选框的位置。我正在服务器端生成它们并将它们呈现到 Web 控件。

我已经盯着这个太久了,所以任何关于如何重构这个函数的建议或其他看待它的方式将不胜感激

看看这个。我只是添加了类并使用了单个函数并为按钮 ID 和输入类传递 2 个参数。要循环到耦合对象,您需要使用类,这样您就不需要将这些类带到您的 css 文件中,只需将它们用作目标值。这样,您可以随时调用它。http://jsfiddle.net/hz4nN/1/

使用.on.bind以及数据参数。

$(myelelement).on("myevent",{someselector: "#foobar",someid:587},function (e) {
    alert(e.data.someid);
});

最新更新