IE と Firefox では正常に動作する次のコードがありますが、Opera または Chrome では正しく動作しません。このコードは基本的に、入力の直後に挿入される DIV を作成します。IE と Firefox では、新しい div が入力に重なって表示されます。ただし、Opera と Chrome の両方で、div は入力の右下隅の横に表示され、配置が正しく機能していません。助言がありますか?
編集:私はそれがどのように見えるかの画像を含めました.ChromeとOperaではこれを行っていません. オーバーラップは意図的なものです。Chrome/Opera では、緑色の div が右下隅に配置されます。これが開始点ですが、CSS クラスの位置を変更する必要があります。
(ソース: aspadvice.com )
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.2.min.js " type="text/javascript"></script>
<script type="text/javascript">
jQuery.fn.makeDiv = function () {
$(this).each(function () {
var className = "wFWn";
$(this).after("<div class='" + className + "'>The Div</div>");
var c = $(this).next("." + className);
var topStartPosition = $(this).outerHeight();
var leftStartPosition = $(this).outerWidth();
c.addClass('green');
c.addClass('position');
var pos = $(this).offset();
var iTopOffset = 0;
if (c.css("top") != "auto")
iTopOffset = parseInt(c.css("top").substring(0, c.css("top").indexOf("px")));
var iLeftOffset = 0;
if (c.css("left") != "auto")
iLeftOffset = parseInt(c.css("left").substring(0, c.css("left").indexOf("px")));
c.offset({ top: pos.top + topStartPosition + iTopOffset, left: pos.left + leftStartPosition + iLeftOffset });
c.css("position", "relative");
});
return this;
};
$(document).ready(function () {
$("#txtTest2").makeDiv();
});
</script>
<style type="text/css">
.position {top: -4px; left: -100px; width: 140px; font-size: 11px; }
.green { background-color: lime; border: solid 1px black;}
</style>
</head>
<body>
<div id="two">
<input name="txtTest2" type="text" maxlength="10" id="txtTest2" /><br />
</div>
</body>
</html>