是否可以使用jQuery一次删除所有属性?
<img src="example.jpg" width="100" height="100">
Run Code Online (Sandbox Code Playgroud)
至
<img>
Run Code Online (Sandbox Code Playgroud)
我试着$('img').removeAttr('*');没有运气.任何人?
我总是想知道为什么如果我试图通过DOM结构中不存在的id选择器找到元素,jQuery会返回true.
像这样:
<div id="one">one</div>
<script>
console.log( !!$('#one') ) // prints true
console.log( !!$('#two') ) // is also true! (empty jQuery object)
console.log( !!document.getElementById('two') ) // prints false
</script>
Run Code Online (Sandbox Code Playgroud)
我知道!!$('#two').length如果对象为空,我可以使用长度=== 0,但对我来说,如果找到则选择器将返回该元素,这是合乎逻辑的,否则null(就像本机document.getElementById一样).
F.ex,这个逻辑不能在jQuery中完成:
var div = $('#two') || $('<div id="two"></div>');
Run Code Online (Sandbox Code Playgroud)
如果没有找到ID选择器返回null,那么更合乎逻辑吗?
任何人?
在CSS中,任何图像路径都相对于CSS文件位置.
f.ex如果我把CSS文件放入/media/css/mystyles.css并使用类似的东西
.background:url(../images/myimage.jpg);
Run Code Online (Sandbox Code Playgroud)
浏览器将查找/media/images/myimage.jpg有意义的图像.
是否有可能在JavaScript中做同样的事情?
F.ex如果我包含/media/js/myscript.js并将此代码放在那里:
var img = new Image();
img.src = '../images/myimage.jpg';
Run Code Online (Sandbox Code Playgroud)
找不到图像,因为浏览器使用HTML文件作为起点,而不是脚本位置.我希望能够使用脚本位置作为起点,就像CSS一样.这可能吗?
我以前曾问过类似的问题,但我从未明确表达过我的观点,或者至少我认为这是一个相关的问题,值得提出来,看看是否有人能提出一些有见地的想法.
当使用jQuery时,我们中的许多人使用该jQuery.ready函数init在DOM加载时执行.它已成为使用jQuery将DOM操作程序添加到网页的事实上的标准方法.相关事件本身存在于某些浏览器中,但jQuery在其他浏览器中模拟它,例如某些IE版本.例:
<head>
<script>
var init = function() { alert('hello world'); };
$.ready(init);
</script>
Run Code Online (Sandbox Code Playgroud)
现在,我们所有的测试都表明这个事件可能很慢.它并没有那么慢window.onload,但在执行之前它仍然经常延迟大约100毫秒.如果FF它可以高达200-300毫秒,特别是在刷新时.
这些是非常重要的毫秒,因为这是在进行任何DOM操作之前显示初始布局的时间量(例如隐藏下拉列表).很多时候,布局"闪烁"主要是由于使用缓慢的DOM就绪事件,迫使程序员使用CSS隐藏元素,并可能使其不易访问.
现在,如果我们在关闭body标签之前将init函数放在脚本标记中,它将更快地执行,通常大约一半时间但有时甚至更快:
<head>
<script>
var init = function() { alert('hello world'); };
</script>
</head>
<body>
<!-- some HTML -->
<script>init();</script>
</body>
Run Code Online (Sandbox Code Playgroud)
一个简单的测试页面,证明了差异:http://jsbin.com/aqifon/10
我的意思是,我们并没有谈论几乎没有明显的差异,因为一些"优化警察"在使用有效选择器时会提升.我们正在讨论在进行DOM操作onload时的一些主要延迟.在FF中尝试这个例子,domready有时会慢100多倍(300ms vs 2ms).
现在我的问题:为什么jQuery.ready建议使用它显然比其他替代品慢得多?init在关闭BODY与使用之前调用之前的缺点是什么jQuery.ready?它可以说更安全"使用domReady,但在什么情况下它比其他选项更安全?(我正在考虑像document.write延迟脚本这样的东西)我们BODY在许多客户端网站上使用了近5年的方式,我们从未遇到过任何问题.它的速度要快得多.
我也很想知道,因为有很多关于jsPerf和优化选择器的模糊,每10000次执行几毫秒,为什么没有太多谈论这个?它基本上是用户面临的第一个延迟,并且在每个页面加载时切片50-100毫秒似乎相当简单......
我有几个输入字段,就像一个填字游戏答案行:

每个方块都有自己的输入字段.其中的原因是有时可以预先填充正方形.现在,在桌面浏览器上,只要输入字符,光标就会跳转到下一个输入字段.使用类似的东西很有效:
$(this).next('input').focus();
Run Code Online (Sandbox Code Playgroud)
但是移动safari(我们在ios上测试)的问题是我不知道如何以编程方式自动"跳转"到下一个输入字段.用户可以通过"下一步"按钮完成,但有没有办法自动执行此操作?
我知道focus()触发器对ios有一些限制,但我也看到了使用合成点击等的一些解决方法.
在实际尝试使用ajax方法之前,是否有"安全"的方法来检查相同的原始策略是否适用于URL?这是我有的:
function testSameOrigin(url) {
var loc = window.location,
a = document.createElement('a');
a.href = url;
return a.hostname == loc.hostname &&
a.port == loc.port &&
a.protocol == loc.protocol;
}
Run Code Online (Sandbox Code Playgroud)
这种作品,但它是一种基于维基百科文章的手动猜测.有没有更好的方法来预先检查跨域允许?jQuery可以使用.
我可以在JavaScript中以方便的方式调用带有参数数组的函数吗?
例:
var fn = function() {
console.log(arguments);
}
var args = [1,2,3];
fn(args);
Run Code Online (Sandbox Code Playgroud)
我需要的arguments是[1,2,3],就像我的数组.
有没有一种将jQuery对象打印为纯HTML的好方法?
例如:
<img src="example.jpg">
<script>
var img = $('img').eq(0);
console.log(img.toString());
</script>
Run Code Online (Sandbox Code Playgroud)
toString()不这样做.我需要HTML等效字符串,即:
<img src="example.jpg">
有没有办法让对象在javascript中返回false?
var obj = new Object();
console.log(!!obj) // prints "true" even if it's empty
Run Code Online (Sandbox Code Playgroud) 是否可以在文档中获取CSS文件的整个文本内容?F.ex:
<link rel="stylesheet" id="css" href="/path/to/file.css">
<script>
var cssFile = document.getElementById('css');
// get text contents of cssFile
</script>
Run Code Online (Sandbox Code Playgroud)
我不是真的通过document.styleSheets获取所有CSS规则,还有另外一种方法吗?
更新:当然有ajax选项,我很欣赏给出的答案.但似乎没有必要使用已经在浏览器中加载的ajax重新加载文件.因此,如果有人知道另一种方法来提取当前CSS文件的文本内容(而不是CSS规则),请发布!
javascript ×9
jquery ×7
css ×2
ajax ×1
arguments ×1
arrays ×1
cross-domain ×1
domready ×1
focus ×1
ios ×1
optimization ×1
performance ×1
stylesheet ×1