gpt4 book ai didi

jquery - 调整 Div 宽度以适应其子控件

转载 作者:行者123 更新时间:2023-11-28 10:16:41 25 4
gpt4 key购买 nike

我正在尝试在我的 aspx 页面上应用可调整大小和可拖动的 jQuery。除了可调整大小的 handle 被放置在控件的不同位置之外,大多数事情都是有序的

for a label(DynamicControlABC) it is getting shown at the center of the label whereas for the textbox(DynamicControlTextbox1) its getting shown approx 3px outside the se corner.

如果我尝试根据文本框重新定位 handle ,则 handle 会更靠近标签的中心,反之亦然(我会发布一个屏幕截图,但至少需要 10 个信誉点才能发布图像 :( )。我在 IE10 和 Firefox 上查看了该页面,两者都产生了相同的结果。

我的代码如下:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<link rel="Stylesheet" href="css_custom/jquery-ui.css" type="text/css" />
<script src="js/jquery-1.11.0.js" type="text/javascript"></script>
<script src="js/jquery-ui-1.10.4.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function (e) {
$("#btnEdit").click(function (e) {
SetButtonText();
ToggleEditMode();
});

function SetButtonText() {
$('#btnEdit').val(function (i, text) {
return text === "Edit" ? "Editing" : "Edit";
});
}

function ToggleEditMode() {
if ($("#btnEdit").val() != "Edit") {
$("*").filter("[id^=DynamicControl]"), function () {
$(this).resizable().parent('.ui-wrapper').draggable({ opacity: .45, cancel: "null" });
};
}
else {
$("*").resizable({ cancel: "*" }).draggable({ cancel: "*" });
}
}
</script>
</head>
<body>
<form id="MyForm" runat="server">
<asp:Label Text="ABCDEFGH" runat="server" ID="DynamicControlABC"></asp:Label>
<asp:TextBox runat="server" ID="DynamicControlTextbox1" Text="Text1"></asp:TextBox>
<input type="button" id="btnEdit" value="Edit" />
</form>
</body>
</html>

此外,我还不熟悉在这里提问,所以如果我遗漏了什么,请告诉我。

这就是我在 jQuery-UI.js 中所做的。以下代码已经存在

if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)) {

//Create a wrapper element and set the wrapper to the new current internal element
this.element.wrap(
$("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({
position: this.element.css("position"),
width: this.element.outerWidth(),
height: this.element.outerHeight() ,
top: this.element.css("top") ,
left: this.element.css("left")
})
);

然后我将其添加为标签:-

 else if(this.element[0].nodeName.match(/label|span|div/i)) {

this.element.wrap(
$("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({
position: this.element.css("position"),
width: this.element.outerWidth() + 7,
height: this.element.outerHeight() + 3,
top: this.element.css("top") ,
left: this.element.css("left")
})
);

现在标签上的 handle 很好了。

最佳答案

可调整大小的句柄被奇怪地放置的原因是我认为你正在使用通用选择器(“*”)所以它针对任何东西,使用这个选择器并不是那么糟糕但是如果你构建一个应用程序它非常昂贵用它来过滤 DOM

看看我在你的代码上做了什么

有一些小的重构和删除(你可以随心所欲地放回你的方法)

我不确定为什么你使用取消而不是可拖动禁用(如果这是有意的请告诉我)

$(document).ready(function (e) {

$("#btnEdit").click(function () {
resizableMode();
});


function resizableMode() {

//cache selectors
var $elem = $('[id^=DynamicControl]');
var $editBtn = $("#btnEdit");

//toggleText button
$editBtn.val(function (i, text) {
return text === "Edit" ? "Editing" : "Edit";
});

//set resizable to textbox
$elem.resizable();

//set states
if ($editBtn.val() !== "Edit") {
$elem.resizable('enable')
.parent('.ui-wrapper').draggable({ opacity: 0.45 , disabled:false });
} else {
$elem.resizable('disable')
.parent('.ui-wrapper').draggable({ disabled: true });
}
}

});

查看输出

http://jsbin.com/sowah/1(有轻微的 css 变化)

你可以在这里编辑 http://jsbin.com/sowah/1/edit

关于jquery - 调整 Div 宽度以适应其子控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24183234/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com