0

有人可以帮我把它转换成 .live 点击吗?

<input class="productSubmitInput" name="AddToCart_Submit" type="submit" value="Add to Cart" onclick="AddToCart(26483,3123041,'',4,false);return false;">

onclick 上有一个 AddToCart 函数我需要使用 .live jquery 函数运行,但我不明白如何转换它

4

3 回答 3

2

除非您使用的是真正旧版本的 jQuery,否则您根本不应该使用该.live()方法。如果使用 1.7 或更高版本,请使用.on(); 如果使用早于 1.7 但高于 1.4.2 使用.delegate().

$(document).on("click", ".productSubmitInput", function() { })

相当于

$(".productSubmitInput").live(function() { })

...除了更好,因为它更高效、更灵活。理想情况下,$(document)您不会做按钮$("#someForm")所在的表单在哪里。"#someForm"

话虽如此,以下是转换代码的一种方法。我假设您传递给AddToCart()函数的参数特定于每个按钮,因此您仍然需要以某种方式将它们与按钮相关联 - 我将使用data-属性:

<input class="productSubmitInput" name="AddToCart_Submit" type="submit"
       value="Add to Cart"
       data-param1="26483" data-param2="3123041"
       data-param3="" data-param4="4" data-param5="false">

然后,删除内联onclick=属性后,您将在脚本块中执行以下操作:

$(document).ready(function() {
    // $(document).on("click", ".productSubmitInput", function() {
    // OR, better
    $("#yourFormIdHere").on("click", ".productSubmitInput", function() {
        var $this = $(this);
        AddToCart( $this.data("param1"), $this.data("param2"), $this.data("param3"),
                   $this.data("param4"), $this.data("param5") );
        return false;
    });
});

当然,如果其中一些AddToCart()参数对于所有按钮都相同,那么您可以将它们直接放入 JS 中,而不是将它们作为属性存储在 HTML 中,例如,如果最后一个参数总是false

    AddToCart( $this.data("param1"), $this.data("param2"), $this.data("param3"),
               $this.data("param4"), false );
于 2012-11-20T01:48:17.877 回答
0

您可以在将运行 .live 的 onclick 语句中附加一个 ID 或添加一个函数,例如:

<input class="..." onclick="live(this)">

和JS:

function live(object)
{
    $(object).live(whatever you do here);
}
于 2012-11-20T01:31:21.450 回答
0
<form id="formId">
    <input class="productSubmitInput" name="AddToCart_Submit" type="submit" value="Add to Cart">
</form>
$('#formId').submit(function( e ){
   e.preventDefault();
   AddToCart(26483,3123041,'',4,false);
});

或替代已弃用的.live()方法:

$('#formId').on( 'click', 'input[name="AddToCart_Submit"]', function( e ){
   e.preventDefault();
   AddToCart(26483,3123041,'',4,false);
});
于 2012-11-20T01:31:27.113 回答