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

时间:2013-12-16 19:50:34

标签: javascript jquery html

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

中使用它

1 个答案:

答案 0 :(得分:1)

.livedeprecated 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");
});