是否有通过JavaScript或JQuery同步两个属性的常用方法。
例如,我有一个“可编辑”的文本字段。双击,我隐藏它,然后显示一个输入框。如果文本字段更改大小,则输入也必须更改以便维护布局。在过去,在重新调整大小的事件中,我会确保我会改变两个对象的大小并且它工作正常。基本上,我手动确保每当标签改变大小时,我也改变了输入框的大小。
是否有比仅设置两种尺寸更好的设计模式?也许是CSS width
发生变化时的监听器?
编辑#1:示例
我想让div_one
不断检查div_two
的宽度。当div_two
的宽度发生变化时,div_one
的宽度将更改自己的宽度以匹配。对我来说,这听起来像是“cssWidthChangeListener”或其他什么。
编辑#2:澄清
我认为我的帖子到目前为止还没有完全清楚,因为我对我的例子中发生的事情得到了很好的回应,但不完全是我所得到的。这是我想要的另一个重新陈述。
当css属性,类或属性在元素上发生更改时,如何创建事件/触发器?当div_one
发生变化时,我想运行某个功能。
答案 0 :(得分:1)
更改元素的属性。不要直接更改CSS属性。直接在JavaScript中操作CSS属性(偶尔display: none;
除外)几乎总会导致令人头疼。
在您的示例中,您有两种状态:状态 A ,div_one
的宽度为 N 1 和{{1} }具有宽度 M 1 。在状态 B 中,div_two
的宽度为 N 2 ,div_one
的宽度为 M 2 子> 的。知道这一点,你所要做的就是将每个状态的宽度定义为CSS文件中的一个类,然后操作元素' (或者他们的祖先和兄弟姐妹的属性)(通常通过添加和删除CSS类)来告诉他们他们处于什么状态。
我发了两个你可以在这个JSFiddle中看到的快速示例:http://jsfiddle.net/jrunning/7Bf92/
如您所见,所有CSS属性都在CSS中设置,只更改了div_two
属性。
在示例1中,两个class
都有一个公共容器<input>
,我们通过添加和删除<div>
类来表示状态的更改.container-active
。输入都不需要知道&#34;关于另一个人的宽度 - 他们只需要知道他们在每个州的宽度。
在示例2中,我们在第一个<div>
上切换.active
课程,并使用adjacent sibling selector(<input>
)我们制作第二个+
<input>
}自动改变它的外观。但是,同级选择器只能在一个方向上工作:纯CSS中没有办法根据之后的元素来改变元素的样式。
答案 1 :(得分:0)
Angular JS提供了我能够通过数据绑定找到的功能。我现在正在阅读教程,但如果我找到更准确的信息,我会更新这个答案。