【问题标题】:Want to reuse jQuery function making a function to use again and again想重用jQuery函数制作函数反复使用
【发布时间】:2016-10-21 19:54:49
【问题描述】:
<script>
    // Roti6p20tk
    $(function () {
        $("#distributedPacketForRoti6p20tk, #bonusForRoti6p20tk, " +
            "#replaceForRoti6p20tk, #returnForRoti6p20tk").on("keydown keyup", sumForRoti6p20tk);
        function sumForRoti6p20tk() {
            $("#totalSalePacketForRoti6p20tk").val(Number($("#distributedPacketForRoti6p20tk").val())
                - Number($("#bonusForRoti6p20tk").val()) -
                Number($("#replaceForRoti6p20tk").val()) - Number($("#returnForRoti6p20tk").val())
            );

            $("#salesInAmountForRoti6p20tk").val(Number($("#totalSalePacketForRoti6p20tk").val()) * 20
            );
        }
    });

    // Roti4p14tk
    $(function () {
        $("#distributedPacketForRoti4p14tk, #bonusForRoti4p14tk, " +
            "#replaceForRoti4p14tk, #returnForRoti4p14tk").on("keydown keyup", sumForRoti4p14tk);
        function sumForRoti4p14tk() {
            $("#totalSalePacketForRoti4p14tk").val(Number($("#distributedPacketForRoti4p14tk").val())
                - Number($("#bonusForRoti4p14tk").val()) -
                Number($("#replaceForRoti4p14tk").val())
                - Number($("#returnForRoti4p14tk").val())
            );

            $("#salesInAmountForRoti4p14tk").val(Number($("#totalSalePacketForRoti4p14tk").val()) * 14
            );
        }
    });

    // final sum For Roti
    $(function () {
        $("#extSaleForRoti6p20tk, #extSalesForRoti4p14tk, " +
            " #dueReceivedForRoti, #dueInAmountForRoti, " +
            "#expAndComForRoti").on("keydown keyup", finalsumForRoti);
        function finalsumForRoti() {
            $("#totalSaleAmountForRoti").val(Number($("#extSaleForRoti6p20tk").val())
                + Number($("#extSalesForRoti4p14tk").val()) +
                Number($("#salesInAmountForRoti6p20tk").val())
                + Number($("#salesInAmountForRoti4p14tk").val())
            );

            $("#totalReceivedForRoti").val(Number($("#totalSaleAmountForRoti").val())
                + Number($("#dueReceivedForRoti").val())
                - Number($("#dueInAmountForRoti").val())
                - Number($("#expAndComForRoti").val())
            );
        }
    });

</script>

这里是html代码

This is my HTML code With Jquery function

我想重用这些 jquery 函数。我只想发送参数,然后这个函数将为所有人做同样的工作。

上述这些函数将与我发送参数相同。 如何重用jquery函数而不一次又一次地复制粘贴? 你能告诉我方法或教程吗?

我想重用代码。我需要它五次以上。但我需要复制粘贴它并更改 id 或变量,但我想创建一个可以执行相同操作的函数。我每次只需要发送参数。 :)

【问题讨论】:

  • Javascript 在客户端运行,PHP 在服务器上运行:两个截然不同的世界。所以不,您不能在 PHP 类中使用 JavaScript 方法。
  • @trincot 我认为他的意思是 PHP 正在创建页面,他想使用 PHP 类根据参数生成不同的 Javascript 函数。
  • 可能是,@Barmar,但重读问题的最后一句话,我不禁认为 OP 期望 JavaScript 方法被 PHP 重用
  • @trincot 如何重用jquery函数而不是一次又一次地复制粘贴?
  • 我想重用代码。我需要它五次以上。但我需要复制粘贴它并更改 id 或变量,但我想创建一个可以执行相同操作的函数。我每次只需要发送参数。 :)

标签: php jquery dry


【解决方案1】:

您可以编写一个将 ID 列表作为参数的 Javascript 函数。

function sumForFields(totalid, salesid, inputids, salesmultiplier) {
    $(inputids.join(',')).on("keydown keyup", function() {
        var total = Number($(inputids[0]).val());
        for (var i = 1; i < inputids.length; i++) {
            total -= Number($(inputids[i]).val());
        }
        $(totalid).val(total);
        $(salesid).val(total * salesmultiplier);
    });
}

然后你可以写:

sumForFields('#totalSalePacketForRoti6p20tk', '#salesInAmountForRoti6p20tk', 
            ['#distributedPacketForRoti6p20tk', '#bonusForRoti6p20tk', '#replaceForRoti6p20tk', '#returnForRoti6p20tk'], 
            20);

这是前两个函数。最后一个具有不同的结构,因为它在组合字段时混合了加法和减法,而不仅仅是像前两个那样减去所有内容。

【讨论】:

  • upvote - 但我希望 OP 分享他的实际 HTML,因为根据嵌套方式,甚至可能不需要使用 ID。
  • @Barmar sumForFields('#totalSalePacketForRoti6p20tk', '#salesInAmountForRoti6p20tk', ['#distributedPacketForRoti6p20tk', '#bonusForRoti6p20tk', '#replaceForRoti6p20tk', '#returnForRoti6p20tk']; >
猜你喜欢
  • 1970-01-01
  • 2013-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-31
  • 2012-05-18
相关资源
最近更新 更多