2009-08-24 2 views
2

Сейчас я использую Jeditable для редактирования на месте. В Jeditable есть несколько полезных опций, но (насколько я знаю), это не позволяет запускать редактирование, кроме как щелкнув соответствующий элемент.jQuery редактировать плагин, который позволяет запускать редактирование с другого элемента

I.e., предположим, что у моего элемента есть id comment. С Jeditable единственным способом начать редактирование является щелчок comment. Я хотел бы поместить небольшой текст рядом с comment (например, «Нажмите, чтобы отредактировать свой комментарий»), который при щелчке превратит comment в редактируемое текстовое поле (и настройте кнопки «Сохранить и отменить» и т. Д.).

ответ

1

Ознакомьтесь с методом jQuery's trigger.

Используйте подобный код:

$('#id-for-text').click(function(){ 
    $('#comment').trigger('click'); 
}); 
+0

его стоит отметить, что триггер необходимо только тогда, когда у вас есть собственные пользовательские обработчики. вы можете добиться того же эффекта, что и выше, если вы делаете $ («# comment»). click() –

+0

Но мне все еще нужен способ заставить на самом деле щелчок «комментарий» не инициировать редактирование (т. е. разрешить запуск редактирования mode * ТОЛЬКО * когда пользователь нажимает # id-for-text), правильно? –

+0

Добавить $ ('# comment'). Unbind ('click') –

1

На основе ваших комментариев выше вы могли бы сделать это:

var editFn = (function(){ return $('#comment').click; })(); 
$('#id-for-text').click(editFn); 
$('#comment').unbind('click'); 

Это говорит этикетку, что событие щелчка должно быть таким же, как событие комментарий Нажмите, затем отвязывает событие в комментарии.

Не уверен, что unbind уничтожит ссылку на editFn, следовательно, включит закрытие.

+0

Печально '$ ('# comment'). Unbind ('click')', похоже, не работает - поле по-прежнему становится редактируемым при щелчке. Даже когда я делаю '$ (" * "). Unbind()' он по-прежнему доступен для кликов (хотя ничего не происходит, как и ожидалось). Как это возможно? –

+0

Хмм единственный способ, которым я мог думать, что это все еще возможно, - это если автор плагина использовал .live() для события вместо .click(). вы можете попробовать ("#comment"). die ('click') вместо unbind и сказать мне, как это работает. Убедитесь, что селектор тот же, что и в подключаемом модуле jeditable. –

+0

Странный - он все еще не работает. Попробуйте http://www.appelsiini.net/projects/jeditable/default.html с firebug. Даже после выполнения '$ (" * "). Unbind()' и '$ (" * "). Die()' вы все еще можете редактировать. –

5

Хорошо, я взломал корпус. В this blog post, автор пишет

Теперь вы можете использовать любое пользовательское событие для запуска Jeditable.

$(".editable").editable("http://www.example.com/save.php", { 
    event  : "make_editable" 
}); 

Так что я сделал это, а затем сделал:

$("#id-for-text").click(function() { 
    $("#comment").trigger('make_editable'); 
    }); 
+0

хорошо работа! рад, что решил для вас. также полезный лакомый кусочек информации для будущего :) –

Смежные вопросы