Javascript 动态插入的内容会创建奇数边距
我有一个页面,将值列表加载到列表框中。当页面加载时,从数据库中检索这些值,并使用PHP构建列表 页面加载后,用户可以输入一个新值,并通过jQuery将其添加到列表中。新的列表项是使用jQuery构建为DOM树的,但它在各个方面都与PHP生成的相同。我使用Chrome开发工具比较了这两种工具,它们是相同的 无论如何,这一切都很好,除了jQuery插入的跨距中有一个位置稍有不同 (添加橙色虚线是为了视觉参考;它们是Javascript 动态插入的内容会创建奇数边距,javascript,html,css,Javascript,Html,Css,我有一个页面,将值列表加载到列表框中。当页面加载时,从数据库中检索这些值,并使用PHP构建列表 页面加载后,用户可以输入一个新值,并通过jQuery将其添加到列表中。新的列表项是使用jQuery构建为DOM树的,但它在各个方面都与PHP生成的相同。我使用Chrome开发工具比较了这两种工具,它们是相同的 无论如何,这一切都很好,除了jQuery插入的跨距中有一个位置稍有不同 (添加橙色虚线是为了视觉参考;它们是轮廓值,因此不会影响任何元素的位置) 我对两者使用相同的类,甚至用Chrome检查了
轮廓
值,因此不会影响任何元素的位置)
我对两者使用相同的类,甚至用Chrome检查了计算样式。PHP插入的列表项和jQuery插入的列表项具有完全相同的样式。然而,通过jQuery插入的Smith Bob没有排队
这可能是什么原因造成的
我没有发布任何CSS,因为有很多,我不知道这会有多大帮助。因为我看过每个单独的计算值,它们都是相同的,所以我认为这可能不是CSS问题
编辑:[删除了测试URL,因为它位于我无法控制的服务器上,并且鉴于问题已得到回答,似乎不再需要它]
红色追加 左侧列表中的按钮应将项目添加到右侧列表中,但它们看起来不会对齐,就像上图所示。老实说,我认为问题不在于用户插入的项目,而在于页面加载时插入的项目 当我用英文版的Chrome启动页面时,“当前活动项目”列表就全搞乱了。删除每个项目,然后通过单击带有红色文本的按钮再次添加它们,可以使列表看起来正常。它还可以使鼠标悬停再次正常工作,因为每个项目都存在于一行中,而不是2-1行与相邻元素重叠 这就是我看到的。左边的图像在页面加载后立即显示,右边的图像在清除并重新填充后显示列表 为完整性添加了代码-在下面的评论中承诺。如果它能帮助别人,那就太好了
<script>
<?php
printf("var apartmentComplexes = { mArray : %s };", json_encode($apartmentComplexes));
?>
// an exerpt of what above statement produces
var apartmentComplexes = { mArray : [{"name":"Aria","description":"Uma das<br> mais exclusivas propostas de Porto ......
function myOnLoad()
{
var numComplexes = apartmentComplexes.mArray.length;
// do some other stuff with the apartmentComplexes object
setPageApartmentComplex(0);
}
</script>
//上述陈述产生的结果的一个练习
var ApartmentComplements={mArray:[{“名称”:“咏叹调”,“描述”:“Uma das
作为波尔图的独家提案……”。。。。。。
函数myOnLoad()
{
var numComplexes=apartmentComplexes.mArray.length;
//对ApartmentComplements对象执行其他操作
setPageApartmentComplex(0);
}
对于内联元素,您可能会在html代码中看到空白。
你可以测试一下。创建一个无序列表,让李的内联(给他们一个背景颜色)。你能看到空间吗?现在让他们浮动->爆炸,空间消失了
在PHP代码中,html的格式很好。跨距是内联元素,因此它们会显示(白色)空格。通过javascript插入的html没有格式,但在中间没有空格,因此没有空格显示
所以,浮动你的跨距,你的问题就解决了。啊,好主意!对不起……我现在就上传。我看到它们与chromiumI对齐,我正在Mac OS X上的Chrome和Safari中测试(日文版),它们都显示了奇怪的对齐问题。我想在Windows机器上测试,但我在几个小时内无法访问。可能是浏览器/操作系统问题…?@david,我正在win7、firefox和chrome上测试。它们都有奇怪的空格。如果你删除开发工具中的项目符号,空格是相等的。我还没有弄清楚是什么y、 …然而。嗯…我原本以为jQuery没有放足够的空间,但现在我认为PHP插入的太多了。检查边距似乎表明jQuery排成一行,但PHP排成一行。再加上你所说的,可能是bullet标记中或周围的隐藏字符?好吧,所以我有点怀疑开始使用时似乎是正确的。感谢屏幕截图!我必须将PHP分离出来,看看那里是否有任何不想要的访客…不用担心,我不使用jQuery,所以我不能推荐代码-但是我倾向于在页面加载后使用jQuery填充表。这样,您将使用单一机制插入e项。关键区别在于,该机制将通过代码而不是用户交互事件启动。:耸耸肩:你是对的。通常我不会使用两种方法来做同样的事情。但是db值是通过PHP检索的,因此使用PHP来创建初始列表更容易。另一方面,我玩弄了对用户创建的列表项进行ajaxing,但这似乎是不必要的开销。加上现在看来这只会加剧问题,因为PHP代码是一开始的问题。啊,好吧。离我可以在英语机器上测试只有一个小时了,所以我会尝试一下,稍后再报告……好吧,这是我稍后报告的意思“我以后不会再报告了:-)谢谢你的帮助,这让我跳出框框思考,这从来都不是一件坏事。每当我想做这样的事情时,我都会用php创建数组,然后将它吐出到json字符串中,作为javascript数组回显。你已经知道哪些项目会出现在左侧列表中,你也知道哪些项目应该已经在正确的列表中。所以,我要做的是创建一个需要添加的项目的索引数组。我会将其输出为json字符串。我会更新我的答案,以包含我目前正在使用的一部分代码。无论如何,我猜现在离英文版本只有3/4个小时了。干杯。呵呵-刚刚看到你很好的第一句话。呵呵!哦,你是认真的吗?如果这是真的,我真的需要打自己一巴掌。。