jQuery设置属性onclick所有元素,而不是使用内联JS

jQuery set attribute onclick all elements instead of using inline JS

本文关键字:JS 属性 设置 onclick 元素 jQuery      更新时间:2023-09-26

我有一些内联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)

.live在版本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");
});