好吧,希望问题是不言自明的.
选择一个代码块和标签很容易,但反过来怎么样?
目前,我只是在行的开头搜索并替换空白.什么更快?
我正在寻找一种方法,使用jQuery返回第一个匹配元素的计算样式对象.然后我可以将此对象传递给另一个jQuery的css方法调用.
例如,对于宽度,我可以执行以下操作以使2个div具有相同的宽度:
$('#div2').width($('#div1').width());
Run Code Online (Sandbox Code Playgroud)
如果我可以使文本输入看起来像现有的跨度,那将是很好的:
$('#input1').css($('#span1').css());
Run Code Online (Sandbox Code Playgroud)
其中.css()没有参数返回一个可以传递给.css(obj)的对象.
(我找不到这个jQuery插件,但它似乎应该存在.如果它不存在,我将把我的下面变成一个插件并发布它与我使用的所有属性.)
基本上,我想伪克隆某些元素,但使用不同的标记.例如,我有一个我要隐藏的li元素,并在其上放置一个看起来相同的输入元素.当用户键入时,看起来他们正在内联编辑元素.
我也对这种用于编辑的伪克隆问题的其他方法持开放态度.有什么建议?
这就是我现在拥有的.唯一的问题是获得所有可能的样式.这可能是一个荒谬的长名单.
jQuery.fn.css2 = jQuery.fn.css;
jQuery.fn.css = function() {
if (arguments.length) return jQuery.fn.css2.apply(this, arguments);
var attr = ['font-family','font-size','font-weight','font-style','color',
'text-transform','text-decoration','letter-spacing','word-spacing',
'line-height','text-align','vertical-align','direction','background-color',
'background-image','background-repeat','background-position',
'background-attachment','opacity','width','height','top','right','bottom',
'left','margin-top','margin-right','margin-bottom','margin-left',
'padding-top','padding-right','padding-bottom','padding-left',
'border-top-width','border-right-width','border-bottom-width',
'border-left-width','border-top-color','border-right-color',
'border-bottom-color','border-left-color','border-top-style',
'border-right-style','border-bottom-style','border-left-style','position',
'display','visibility','z-index','overflow-x','overflow-y','white-space',
'clip','float','clear','cursor','list-style-image','list-style-position',
'list-style-type','marker-offset'];
var len = attr.length, obj = {};
for (var i = 0; i < len; i++)
obj[attr[i]] = jQuery.fn.css2.call(this, attr[i]);
return obj;
}
Run Code Online (Sandbox Code Playgroud)
编辑:我现在已经使用上面的代码一段时间了.它运行良好,行为与原始css方法完全相同,只有一个例外:如果传递0个args,则返回计算出的样式对象.
正如您所看到的,如果适用的话,它会立即调用原始的css方法.否则,它将获取所有列出属性的计算样式(从Firebug的计算样式列表中收集).虽然它获得了很长的值列表,但速度非常快.希望它对其他人有用.
我理解double not运算符在JavaScript中的作用.我很好奇它的使用,以及我最近做出的断言是否正确.
我说这if (!!someVar)从来没有意义,也不是(!!someVar && ...因为它if和&&将导致someVar被评估为布尔值所以!! 是多余的.
事实上,我唯一能想到使用double not运算符是合法的,如果你想对另一个布尔值进行严格的比较(那么可能在返回值中明确要求true或false).
它是否正确?我开始怀疑自己的时候,我注意到的jQuery 1.3.2同时使用if (!!someVar)和return !!someVar && ...
双重在这些情况下没有任何实际效果吗?
我个人认为,这只是导致混乱.如果我看到if语句,我知道它将它作为布尔值进行评估.
这个问题非常自我解释.
我正在使用来自多个开发人员的代码.其中一些人使用分号不一致,我只是想在每一行之后保持一致性(并防止任何掩盖错误).
我使用Aptana格式化我的源代码,但它不会为你添加分号AFAIK.
谢谢.
默认情况下,perl在win32环境中打印\ r \n.我怎么能覆盖这个呢?我正在使用perl对存储库中的某些源代码进行一些更改,我不想更改所有换行符.
我尝试更改输出记录分隔符,但没有运气.
谢谢!
编辑:想要包含一个代码示例 - 我正在搜索并替换一些遵循相对简单模式的文件,如下所示:
#!/usr/bin/perl
# test.pl
use strict;
use warnings;
$/ = undef;
$\ = "\n";
$^I=".old~";
while (<>) {
while (s/hello/world/) {
}
print;
}
Run Code Online (Sandbox Code Playgroud)
对于在cmd行上传递的任何文件,这应该用"world"替换"hello"的任何实例.
编辑2:我尝试了最初binmode没有任何运气的建议.我钻了更多,发现(inplace edit特殊变量)覆盖了.任何工作仍然可以使用inplace编辑?$^Ibinmode
编辑3:作为思南低于所指出的,我需要使用binmode ARGVOUT带有$^I代替binmode STDOUT在我的例子.谢谢.
我在Firebug中注意到这个规则:
*|*:link {
color:#0000EE;
}
Run Code Online (Sandbox Code Playgroud)
我不确定我以前见过竖条(|).它位于about:PreferenceStyleSheet中,因此它可能是特定于Firefox的.
这是什么意思?任何参考链接?我想可能垂直条是"OR",但那是CSS中的逗号.
我希望为我的用户提供addthis小部件,但我想延迟加载它以便我的页面尽快加载.但是,在通过脚本标记然后通过我的延迟加载方法尝试它之后,它似乎只能通过脚本标记工作.在混淆的代码中,我看到一些看起来像是依赖于DOMContentLoaded事件(至少对于firefox).
由于DOMContentLoaded事件已经触发,因此窗口小部件无法正确呈现.该怎么办?
我可以使用脚本标记(较慢)...或者我可以触发(以交叉浏览器方式)DOMContentLoaded(或等效)事件?我有一种感觉这可能是不可能的b/c我相信(像jQuery)有内容就绪事件的多个测试,因此必须发生多个模拟事件.
尽管如此,这是一个有趣的问题b/c我已经看到一些小部件现在假设你通过静态脚本标签包含他们的东西.如果他们编写的代码对于关注速度的开发人员更有用,那会很好,但在那之前,是否有一个解决方法?和/或我的任何假设是错误的?
编辑: 因为问题的第一个答案似乎忽略了我的问题,我想澄清一下情况.
这是一个特定的问题.我不是在寻找另一个延迟加载脚本或检查是否有一些依赖项是加载脚本.特别是这个问题涉及
虽然它是深奥的,但我已经看到它发生在一些小部件 - 小部件开发人员认为你只是愿意在页面底部引入另一个脚本标记.虽然雅虎,谷歌和亚马逊的大量研究表明它对用户的体验很重要,但我希望能节省500到1000毫秒的时间.
**我用锤头和个人经验测试表明,这将是我在这种情况下的节省.
我很好奇我是否可以根据某些值或内联表达式(不使用if语句)在打印到STDOUT或STDERR之间切换.
print ($someFlag ? STDOUT : STDERR) "hello world!"
Run Code Online (Sandbox Code Playgroud)
显然,该语法不起作用.
我应该将每个data()调用与稍后的removeData()调用配对吗?
我的假设:jQuery的remove()将从DOM中删除元素,如果我没有任何其他删除引用,我不需要再做任何清理.
但是,如果我有一些javascript var或object引用其中一个元素被删除,我需要清理它,我假设它也适用于jQuery的数据函数,因为它以某种方式引用元素.
因此,如果我确实需要在删除之前调用removeData,是否有删除与元素关联的所有数据的快捷方式,或者我必须通过名称显式调用每个数据?
编辑:我查看了源代码并确认了Borgar和roosteronacid所说的内容.删除从dom中取出元素并删除与它们一起存储的任何事件和数据 - 这很方便,但让我想知道何时使用removeData().可能不经常.
我很难过.我和客户都在XP机器上运行Firefox 3.0.12.我们在不同机器上的同一浏览器中查看同一页面,并且具有不同的结果.注意:所有IE浏览器在两台机器上都是一致的,我的FF 3.5.1与我的FF 3.0.12一致.(他没有安装FF 3.5.x来进行比较).
有一个像素差异导致他的标题div (所有图像,没有文本)包装.我很好.如果我将标题扩展1 px(通过Firebug css编辑),它就可以了.
所以我的问题是影响渲染的其他变量是什么?
我试图"开箱即用",因为它似乎应该完全相同.
我们清除了浏览器缓存.我在HTML源代码上做了一个差异,除了javascript日期时间戳和javascript跟踪代码var之外,源代码是相同的.
我知道这个问题对于来源有帮助,但我的客户特别不希望这个页面在互联网上存在.我也通过webex会话验证了这个问题.起初,我无法相信我们会有不同的结果.
其他人之前遇到过这样的事情吗?接下来应该检查/调试什么?
编辑:有很多指向字体的建议,但标题仅使用图像.嗯,这不完全正确,有一些div是可折叠菜单的一部分,但所有这些都设置display:none为初始渲染,所以我认为它是另一回事.
编辑2:我已经在我的计算机上更改了各种字体和大小(系统默认字体设置和Firefox中)以尝试复制问题.我改变了渲染风格(标准与清晰类型).纳达.问题几乎绝对不是字体相关的.我将不得不看看我是否可以获得更多访问客户端计算机的权限来复制问题.
javascript ×5
aptana ×2
css ×2
firefox ×2
ide ×2
jquery ×2
perl ×2
boolean ×1
dom ×1
dom-events ×1
eclipse ×1
formatting ×1
layout ×1
memory ×1
memory-leaks ×1
newline ×1
operators ×1
optimization ×1
pixel ×1
widget ×1
zend-studio ×1