【问题标题】:How to re-factor a jquery function to pass selector and element id into function as parameters如何重构 jquery 函数以将选择器和元素 id 作为参数传递给函数
【发布时间】:2012-04-28 03:51:02
【问题描述】:

我有一个 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) 是函数中唯一会改变的两个元素,我真的很想把这个因素考虑在内,这样我就可以重用这个函数,而不是每次都重写它。

我被卡住的地方是将选择器作为参数传递。由于 styl 的 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 控件。

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

【问题讨论】:

    标签: jquery jquery-selectors


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      使用.on.bind 和数据参数。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-27
        • 1970-01-01
        • 2012-05-24
        • 1970-01-01
        • 1970-01-01
        • 2012-09-09
        相关资源
        最近更新 更多