Jeditable - активируйте редактирование X, нажав Y

Я пытаюсь использовать Jeditable в качестве встроенного решения для редактирования.

Поведение по умолчанию (щелкните элемент, чтобы отредактировать его) работает достаточно хорошо, но я бы хотел активировать элемент, щелкнув другой элемент.

Например, нажатие на a.activateEdit активирует следующий div.edit (очевидно, это следует сделать с помощью селекторов jQuery).

Я изучил Jeditable документы для этого, но не смог найти правильный синтаксис

К вашему сведению, синтаксис Jeditable по умолчанию - это что-то вроде:

 $(document).ready(function() {
     $('.edit').editable('http://www.example.com/save.php');
 });

* Редактировать: найдено лучшее решение *

14.12.2008 14:41:06
Я знаю, что ваш вопрос был задан некоторое время назад, но в настоящее время я пытаюсь реализовать нечто очень похожее. У меня это работает с нажатием ссылки, но есть ли способ удалить событие щелчка элемента, который вы хотите редактировать? Другими словами, сделать только редактируемый элемент, редактируемый по ссылке, а не когда вы щелкаете по нему конкретно? Спасибо.
Chris Mitchell 18.05.2011 20:50:57
Вы можете попробовать unbind () удалить привязку события click для этого объекта.
yoavf 19.05.2011 08:19:14
Извините, но можете ли вы предоставить код? Я довольно новичок в этом. Будет ли unbind () идти в .editable (url, {}) ;?
Chris Mitchell 19.05.2011 13:42:12
Спасибо, но я обошел вокруг. Я сохранил возможность редактировать элемент, нажав на него или ссылку редактирования. Спасибо за помощь.
Chris Mitchell 19.05.2011 15:49:23
+1 за лучшее решение
askrich 21.08.2014 13:38:21
4 ОТВЕТА
РЕШЕНИЕ

Выше код тоже не совсем корректен. Это вызывает событие click на ВСЕХ Jeditable экземплярах.

Есть много способов сделать это, и все зависит от вашего HTML, но, например, если у вас есть следующий HTML:

<div class="edit" id="unique_id">Editable text</div> 
<a href="#" class="edit_trigger">Edit me!!</a>

Тогда вы можете использовать следующий JavaScript:

/* Bind Jeditable instances to "edit" event. */
$(".edit").editable("http://www.example.com/save.php", {
    event     : "edit"
});
/* Find and trigger "edit" event on correct Jeditable instance. */
$(".edit_trigger").bind("click", function() {
    $(this).prev().trigger("edit");
}); 
24
10.07.2009 10:58:18
Стоит отметить, что в некоторых контекстах, $(this).prev()это не обязательно тот элемент, для которого вы на самом деле хотите установить режим редактирования. (В этом примере, тем не менее, это так.) Вероятно, более надежно выбрать $("#unique_id")или $(".edit[id='unique_id']")убедиться, что вы редактируете правильный элемент.
pjmorse 8.11.2012 19:02:29
Это здорово, хотя. Я просто использовал триггер («щелчок»), поэтому мне не нужно было устанавливать специальный триггер, и у меня были другие функции, которые также запускались при нажатии. Но это было именно то, что мне было нужно.
Jake 18.12.2012 05:41:51
@Mika, как мне отредактировать несколько полей с помощью плагина Jeditable, я просто оказался в ситуации, когда мне нужно отредактировать несколько полей и проверить друг друга.
Sam Samson 28.12.2012 07:42:29

Вы можете поместить этот код в функцию щелчка другого элемента. пример:

HTML:

<a class="clickme">Click me to edit</a>
<div class="edit">Edit Me!</div>

JQuery:

$(document).ready(function() {
$("a.clickme").click(function(){
     $('.edit').editable('http://www.example.com/save.php');
});
});
2
14.12.2008 16:40:15

Хорошо, ответ Аты не совсем сработал, но он поставил меня на правильный путь:

$(document).ready(function() {
    $('.edit').editable('http://www.example.com/save.php');
    $("a.clickme").click(function(){
          $('.edit').click();
   });
});
2
23.05.2017 11:53:26

Я объединил полномочия двух предыдущих ответов для нацеливания на следующий редактируемый элемент следующим образом:

/* Find and trigger "edit" event on next Jeditable instance. */ $(".edit_trigger").livequery( 'click', function() { $(this).next().click(); });

1
6.11.2009 06:59:57