有人可以帮我把它转换成 .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 函数运行,但我不明白如何转换它
有人可以帮我把它转换成 .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 函数运行,但我不明白如何转换它
除非您使用的是真正旧版本的 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 );
您可以在将运行 .live 的 onclick 语句中附加一个 ID 或添加一个函数,例如:
<input class="..." onclick="live(this)">
和JS:
function live(object)
{
$(object).live(whatever you do here);
}
<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);
});