我有一些内联JS,我无法转换到jQuery。我想删除所有内联的onclick事件,并按类将它们全部定位。
HTML - 复选框
<td class="center">
<?php if ($product['selected']) { ?>
<input type="checkbox" name="selected[]" id="<?php echo $product['product_id']; ?>_select" value="<?php echo $product['product_id']; ?>" checked="checked" />
<?php } else { ?>
<input type="checkbox" name="selected[]" id="<?php echo $product['product_id']; ?>_select" value="<?php echo $product['product_id']; ?>" />
<?php } ?>
</td>
HTML - 内联JS
<input type="text" class="editable" name="<?php echo $product['product_id']; ?>_model" id="<?php echo $product['product_id']; ?>_model" value="<?php echo $product['model']; ?>" size="16" onclick='document.getElementById("<?php echo $product['product_id']; ?>_select").setAttribute("checked","checked");' />
上面的代码有效,但是当我尝试使用jQuery version 1.7.1
时,它会中断。这是我试过的代码。
$(document).ready(function() {
$(".editable").live("click", function() {
$("#<?php echo $product['product_id']; ?>_select").attr("checked", "checked");
$("#<?php echo $product['product_id']; ?>_select").checked = true;
});
});
我对jQuery并不熟悉,但我认为它很接近。任何想法?
编辑:
问题在于$("#<?php echo $product['product_id']; ?>_select")
如果硬编码,它可以工作。 KevinB是正确的,即使我之前从未遇到过这个问题,但从未在$(element)
答案 0 :(得分:1)
.live
是deprecated in version 1.7 - 可能会解释它。请改用.on
。
$(".editable").on("click", function() {
var name = '<?php echo $product['product_id']; ?>';
console.log("Name: " + name);
var el = $("#" + name + "_select");
console.log(el);
el.prop("checked", "checked");
});