Проблема в не 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) );
});