当我在段落中选择一个链接(没有id或类)时,我需要获得所选链接的href值。我如何在jQuery中做到这一点?我正在使用document.getSelection()
方法。但我没有在document.getSelection()
中看到任何返回href值的方法。
当我通过拖动鼠标选择链接时,我可以获得如下的href值。
currentLink = document.getSelection().anchorNode.parentElement.href;
但是当我通过双击文本选择链接时,上面的命令将不会返回href值。请帮忙。
答案 0 :(得分:1)
在这里,我给你写了一些东西让你开始。它比原始代码更具跨浏览性:
(function(AnchorSelector, $, undefined) {
AnchorSelector.getAnchorHrefs = function(e) {
var container = '';
if (window.getSelection) {
var sel = window.getSelection();
if (sel.rangeCount) {
var div = $('<div>');
for (var i = 0, len = sel.rangeCount; i < len; ++i) {
div.append(sel.getRangeAt(i).cloneContents());
}
container = div;
}
} else if (document.selection) {
container = $('<div>').append(document.selection.createRange().htmlText);
}
var arr = $.map(container.find('a'), function(n, i) {
return ($(n).attr('href'));
});
if (arr.length) {
alert(arr.join(','));
}
// Note: you can check e.type to see if it was a 'dblclick' or a 'mouseup'
// you may need to employ some type of debouncing to not get two alerts
// when you double click the text
}
$(function() {
$(document)
.dblclick(AnchorSelector.getAnchorHrefs)
.mouseup(AnchorSelector.getAnchorHrefs);
});
})(window.AnchorSelector = window.AnchorSelector || {}, jQuery);
这是一个jsFiddle demo。