要回答你什麼替代品有問題,你可以調用unlink
之前生效的問題,並設置任何a
元素的href
屬性:
$(document).ready(function() {
var $editable = $('[contenteditable]');
$('#btn').click(function() {
$editable.find('a:not([href])').attr('href', '#');
document.execCommand("unlink", false, false);
});
});
http://jsfiddle.net/Bz7pR/7/
當然,可能有多種方法來「解決」問題。我想$.unwrap()
可能會工作。我不太熟悉document.execCommand
和富文本編輯器,但我想你需要小心,精確和測試測試。
請注意,這只是一個演示;你真的必須考慮這一點,並考慮你將如何處理這個問題。例如,如果Firefox是瀏覽器,則可以檢測並且只運行該瀏覽器,這會限制您可能會遇到的任何意外損壞或結果。
編輯
這裏是一個更完整的版本,隻影響所選文本範圍:
$(document).ready(function() {
$('#btn').click(function unlink() {
var holder,
frag,
range,
child;
if (window.getSelection && window.getSelection().getRangeAt) {
holder = document.createElement('div');
frag = document.createDocumentFragment();
range = window.getSelection().getRangeAt(0);
$(holder)
.append(range.cloneContents())
.find('a:not([href])')
.attr('href', '#');
while ((child = holder.firstChild)) {
frag.appendChild(child);
}
range.deleteContents();
range.insertNode(frag);
}
document.execCommand("unlink", false, false);
});
});
http://jsfiddle.net/Bz7pR/12/
我不是天才,當談到文字範圍和所以我修改了在這個答案中找到的代碼:
https://stackoverflow.com/a/6252893/451969
想出上述內容。如果有人看到錯誤或不一致的東西,請在下面留言。
技術上,如果沒有'href',它是一個鏈接嗎? –
爲什麼在''元素中仍然有'onclick'處理程序?它做了不同的事情還是隻是多餘的?無論如何,它不被認爲是好的風格,更好的是隻使用jQuery綁定事件處理程序。 – wnstnsmth
對不起,這只是多餘的......我忘了刪除它,但現在它消失了。 – vso