У меня проблема с методом jQuery remove () в IE.Он удаляет элемент, но не полностью: он оставляет последние 2 закрывающих тега.
Я использую веб-формы ASP.Net.На странице мы используем сторонний виджет, который включает Javascript.Часть стороннего виджета - это окно поиска и кнопка внутри формы.(Все, что находится в контейнере div class = "getquote" ниже, происходит от стороннего виджета).
Вот страница:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TestFooBar.aspx.cs" Inherits="MyProject.TestFooBar" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<div id="top">Some Stuff</div>
<div class="getquote">
<div class="box">
<form style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px;
padding-top: 0px" action="http://foo.com/?q=bar"
method="post" target="_self">
<input class="ticker" onclick="this.select()" value="Enter foo" maxlength="15"
type="text" name="fooInput" jquery123456789="42" />
<input class="go" value="Get Foo" type="submit" name="Go" />
</form>
</div>
</div>
<div id="bottom">Some More Stuff</div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"></script>
<script type="text/javascript">
$(function() {
alert($("div").length)
$('div.getquote').remove();
alert($("div").length)
});
</script>
</div>
</form>
</body>
</html>
Разработчики ASP.Net сразу распознают огромную проблему: вы не можете иметь форму внутри веб-формы ASP.Net, потому что веб-формы используют одинвнешний элемент формы, обернутый вокруг всей страницы.
Так что мое решение - использовать jQuery для удаления формы и ее функциональности следующим образом:
$(function() { $('div.getquote').remove(); });
К сожалению, remove () не работает правильно в IE.Он оставляет следующую разметку:
</form></DIV>
Кто-нибудь может объяснить, почему это происходит и какое возможное решение может быть?
ОБНОВЛЕНИЕ АНАЛИЗА Я до сих пор не знаюиметь окончательное решение, но считаю, что проблема может быть неправильно сформированный HTML.когда вы просматриваете исходный код через панель инструментов разработчика IE, вот результат.
<FORM id=form1 method=post name=form1 action=TestFooBar.aspx>
<DIV><INPUT id=__VIEWSTATE value=/wEPDwULLTE2MTY2ODcyMjlkZJK6qpmH4eDoZyoX9RueM4keR6Hd type=hidden name=__VIEWSTATE> </DIV>
<DIV>
<DIV id=top>Some Stuff</DIV></FORM>
<DIV id=bottom>Some More Stuff</DIV>
<SCRIPT src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"></SCRIPT>
<SCRIPT type=text/javascript>
$(function() {
alert($("div").length)
$('div.getquote').remove();
alert($("div").length)
});
</SCRIPT>
</DIV></FORM>
Итак, хотя jQuery успешно удалил большую часть <div>
, он оставил позади закрывающий артефакт </form>
.