Я дал форуму хороший поиск по этому вопросу и не могу найти конкретный ответ.
У меня есть div, который можно редактировать, у меня есть 3 кнопки вверху (жирный, курсив, подчеркивание), которые применяют execCommand к выделенному тексту в div.
У меня также есть несколько событий щелчка, чтобы отслеживать, что нажимается внутри div, чтобы выделить соответствующие кнопки вдоль верхней части, что прекрасно работает (игнорируйте неверный xhtml и придерживайтесь теории):
$("[contenteditable]").delegate("u", "click", function (evt) {
$("[command='underline']").addClass('on');
});
Если вы случайно щелкнули подчеркнутый текст в div, кнопка подчеркивания получает стиль 'on'.
Моя проблема заключается в том, что теперь мне нужно создать аналогичный фрагмент кода, который отслеживает, где находится каррет, который выполняет ту же работу, что и выше, вместо щелчка (если пользователь использует клавиши со стрелками для перемещения по элементу div), это можно вызвать с помощью этого бита кода:
$("[contenteditable]").bind("keypress",function(e){
//something about where the caret is and whats around it here
});
но вот где я застрял, я не знаю, как получить родительские теги или какие-либо другие теги, в зависимости от того, что внутри может быть каре, чтобы выделить соответствующие кнопки вверху.
(Я думаю, что если есть решение для этой проблемы, я мог бы отказаться от функции щелчка с разделением, потому что новая функция положения карреты все равно будет работать)
Действительно ценю любую помощь, которую могут оказать люди, работая над ней в течение 3 дней.
======
Какая головная боль !!! Но я решил это !!!!!!
$('[contenteditable]').keydown(function() {
thiselement = window.getSelection().anchorNode.parentNode;
$(thiselement).trigger('click');
});
То, что это сделает, вызовет правильную функцию щелчка, о которой я упоминал ранее для соответствующего тега!