Атрибут set jQuery позволяет щелкать все элементы вместо использования встроенного JS.

0

У меня есть встроенный 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)

  • 3
    Вы не хотите использовать php в этом событии клика. Кроме того, вам, вероятно, следует обновить .live до .on или .delegate, .live удаляется в более новых версиях.
  • 0
    Почему вы меняете его на jQuery, если вы не знакомы с jQuery?
Показать ещё 1 комментарий
Теги:

1 ответ

1
Лучший ответ

.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");
});
  • 0
    Зачем использовать .on(element, event т. Д. $(element).click(function () { Просто предпочтения пользователя?
  • 0
    Хорошо, я попробовал все это, и ни один из них не работает. $(element).click(function () { .on
Показать ещё 8 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню