Jeditable - активируйте редактирование X, нажав Y - PullRequest
15 голосов
/ 14 декабря 2008

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

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

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

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

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

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

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

Ответы [ 4 ]

24 голосов
/ 10 июля 2009

Выше код тоже не совсем корректен. Это вызывает событие щелчка во ВСЕХ 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");
}); 
2 голосов
/ 15 декабря 2008

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

$(document).ready(function() {
    $('.edit').editable('http://www.example.com/save.php');
    $("a.clickme").click(function(){
          $('.edit').click();
   });
});
2 голосов
/ 14 декабря 2008

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

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');
});
});
1 голос
/ 06 ноября 2009

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

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

...