У меня есть встроенный 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, но думаю, что это близко. Есть идеи?
EDIT: проблема связана с $("#<?php echo $product['product_id'];?>_select")
она работает, если жестко закодирована. KevinB был прав, хотя у ive никогда не было этой проблемы раньше, но он никогда не использовал ее здесь $(element)
.live
устарел в версии 1.7 - возможно, это объясняет. .on
этого используйте .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");
});
.on(element, event
т. Д. $(element).click(function () {
Просто предпочтения пользователя?
$(element).click(function () {
.on