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"

そうは言っても、以下はコードを変換する1つの方法です。関数に渡す引数は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()の場合など、HTMLに属性として保存するのではなく、直接JSに配置できます。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 に答える