問題是
不
jQuery的
運行
console.log($("div:has(span)").html());
console.log($("div").has($("span")[0]).html());
但是,下面拋出一個異常http://jsfiddle.net/mendesjuan/4hV6c/8/
var textNode = $("span")[0].childNodes[0];
$("div").has(textNode);
這意味着您無法將文本節點傳遞到$.has
。您應該提交錯誤使用jQuery
被示數出來是給下面的消息
No such interface supported jquery-1.7.1.js, line 5244 character 3
正試圖調用一個節點上的contains
方法的行。這意味着這真的是一個IE瀏覽器的錯誤,jQuery沒有解決。我轉載而無需調用$.has
http://jsfiddle.net/4hV6c/10/
// This is broken in IE
var textNode = $("span")[0].childNodes[0];
var divNode = $("div")[0];
divNode.contains(textNode);
解決方法http://jsfiddle.net/4hV6c/12/
function contains(outer, inner) {
var current = inner;
do {
if (current == outer) {
return true;
}
} while((current = current.parentNode) != document.body);
return false;
}
rangy.init();
$(document).bind("mouseup", function() {
var a = rangy.getSelection();
start_node = a.anchorNode;
end_node = a.focusNode;
var b = a.getRangeAt(0);
var c = b.commonAncestorContainer;
b.selectNodeContents(c);
a.setSingleRange(b);
alert(contains(end_node.parentNode, start_node));
});
如果這是真的,那將是一個大問題,並且還有一個與它關聯的jQuery bug報告,不是嗎? – Sparky 2012-03-30 16:58:07
小提琴不撒謊。 = \我會看看我是否可以在jQuery /聯繫某人。 – NullVoxPopuli 2012-03-30 17:01:49
您的jsFiddle的預期操作順序和預期結果是什麼?無論我做什麼,我都會收到一個包含「false」的警報。使用Safari。 – Sparky 2012-03-30 17:07:12