我有这样的事情:
var Something = function(){
this.render = function(){};
$(window).resize(function(){
this.render();
});
}
Run Code Online (Sandbox Code Playgroud)
麻烦的是,在匿名函数里面'this'指的是窗口对象.我知道我可以这样做:
var Something = function(){
this.render = function(){};
var tempThis = this;
$(window).resize(function(){
tempThis.render();
});
}
Run Code Online (Sandbox Code Playgroud)
但有更好的方法吗?这看起来不太优雅.
我有几百个"行"元素,如下所示:
<div class='row'>
<div class='cell'></div>
<div class='cell'></div>
<div class='cell'></div>
</div>
Run Code Online (Sandbox Code Playgroud)
我们需要在已经在页面上呈现之后获取clientHeight.我知道"clientHeight"属性强制重排,这会影响我的表现,因为它们有很多.但是 - 它们已经被渲染,我知道它们的大小在它们渲染的时间和我查询它们的高度的时间之间没有变化.
在查询高度时,有没有办法告诉浏览器不要重排?此外 - webkit检查员说:
Layout tree size 5901
Layout scope Whole document
Run Code Online (Sandbox Code Playgroud)
div是一个绝对定位的祖先 - 不应该只是绝对定位的元素被回流?
编辑:
所以提供的答案是正确的.我实际上弄脏了布局,因为我有这个循环:
rows.each(function(){
$(this).css('height', this.clientHeight);
});
Run Code Online (Sandbox Code Playgroud)
将代码更改为此修复了问题:
var heights = rows.map(function(){
return this.clientHeight;
});
rows.each(function(){
$(this).css('height', heights.shift());
});
Run Code Online (Sandbox Code Playgroud) 这个方法在jQuery ui datepicker的第1380行:
_daylightSavingAdjust: function(date) {
if (!date) {
return null;
}
date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);
return date;
}
Run Code Online (Sandbox Code Playgroud)
它在datepicker代码中的许多地方使用.据我所知,这个代码只会增加2小时到任何小时> 12的日期,否则将小时数设置为0.
我在我的控制台中试了一下:
date = new Date();
console.log("" + date);
date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);
console.log("" + date);
Run Code Online (Sandbox Code Playgroud)
我得到了:
Tue Dec 06 2011 18:36:06 GMT+0100 (CET)
Tue Dec 06 2011 20:36:06 GMT+0100 (CET)
Run Code Online (Sandbox Code Playgroud) 我有一系列表示坐标的Python元组:
tuples = [(1,1), (0,1), (1,0), (0,0), (2,1)]
Run Code Online (Sandbox Code Playgroud)
我想创建以下列表:
l = []
for t in tuples:
l[ t[0] ][ t[1] ] = something
Run Code Online (Sandbox Code Playgroud)
我得到一个IndexError:list index超出范围.
我的背景是在PHP中,我希望在Python中你可以创建以index> 0开头的列表,即创建间隙然后填充它们,但似乎你不能.
我们的想法是让列表在之后排序.我知道我可以用字典做到这一点,但据我所知,字典不能按键排序. 更新:我现在知道他们可以 - 看到公认的解决方案.
编辑:我想要做的是创建一个2D数组,代表用元组坐标描述的矩阵,然后按顺序迭代它.如果我使用字典,我不能保证迭代按键顺序 - >(0,0)(0,1)(0,2)(1,0)(1,1)(1,2) )(2,0)(2,1)(2,2)
有人可以帮忙吗?
如何将插入符号(折叠范围)放在空元素节点中.这段代码应该可行,但它没有.
node = document.getElementById('some-empty-strong-node')
range = document.createRange()
range.selectNodeContents(node)
window.getSelection().addRange(range)
Run Code Online (Sandbox Code Playgroud)
尝试其他技巧,例如在元素节点内添加一个空文本节点,或者在节点内设置范围start,在其他地方设置范围结束,然后折叠范围也不起作用.Anoyone有想法?
在Python中执行以下操作的最佳方法是什么:
for item in [ x.attr for x in some_list ]:
do_something_with(item)
Run Code Online (Sandbox Code Playgroud)
这可能是一个小问题,但是列表理解不是生成我们不需要的新列表而只是占用内存吗?如果我们能够制作类似迭代器的列表理解,那不是更好吗?
我需要检查某个帖子是属于某个类别还是属于某个类别的后代.有没有wordpress功能,或者我需要自己做?
编辑:我应该提到WP版本是2.7.抱歉
我需要在用户离开页面时提醒用户,并且可以使用window.onUnload事件来处理.但我还需要通过在页面上提交表单或单击导航链接来检查用户是否正在导航.我可以使用表单的onSubmit事件来设置一个标志,然后在window.onUnload事件中检查该标志,但我不确定哪一个先触发.
有任何想法吗 ?
好的,我有这个代码:
var room = [ { time: 0, people: 0 } ];
Run Code Online (Sandbox Code Playgroud)
然后:
time = 5;
for( var i in room ) {
if( room[i].time < time ){
spliceIndex = i + 1;
}
}
console.log(spliceIndex);
Run Code Online (Sandbox Code Playgroud)
控制台显示:01- 这意味着1连接在一起,这意味着它i是一个字符串,而不是预期的整数.将索引转换为整数修复了问题,但我敲了几个小时......我能解释为什么会发生这种情况吗?我在Firefox 3.5和Safari 4上得到了这个.
我似乎无法找到一个很好的教程.这很简单:我想将样式表/ js文件链接到我的应用程序的HEAD部分.
我找到了index.html文件的位置(在tmp/build/static/my_project/en/current中),我可以对它进行更改,但我认为这是错误的方法.
我最好通过代码解释一下.我有这样的事情:
var object1 = function(){
//do something
}
var object2 = function(){
//do something else
}
var objects = {
'o1' : object1,
'o2' : object2
};
var actions = [];
function addAction( actionName ){
var object = objects[actionName];
actions.push( function(){ new object(); } );
}
Run Code Online (Sandbox Code Playgroud)
因此,此代码根据保存在数组中的用户输入保存一系列运行时确定的操作.
addAction( "o1" );
addAction( "o2" );
Run Code Online (Sandbox Code Playgroud)
如果我想重播那个序列我就是这样做的:
for( i in actions ){
actions[i]();
}
Run Code Online (Sandbox Code Playgroud)
这将创建两个类型为object1和object2的匿名对象.
现在,我需要以某种方式序列化actions []数组,但我需要其中的每个函数来保留它的范围.如果我只是将函数转换为字符串,我得到:
"function(){ new object(); }"
Run Code Online (Sandbox Code Playgroud)
如果我评估这个字符串,那么'object'将是未定义的.你会怎么做?
在我的subversion客户端(基石)上,当连接到新的SVN存储库时,我有3个选项:文件存储库,HTTP服务器和SVN服务器.
区别仅在于用于通信的协议吗?
我正在使用node-mongodb驱动程序编写一些node.js代码.当我像这样获取它们时,我决定缓存集合对象:
var db = connectionObject;
function getCollection(collectionName) {
return function(callback) {
var cache;
if (cache) return callback(null, cache);
db.collection(collectionName, function(err, collection) {
return err ? callback(err) : callback(null, cache = collection);
});
}
}
var usersCollection = getCollection('users');
usersCollection(function(err, collection) {
collection.find({}); // Rest of code here ...
});
Run Code Online (Sandbox Code Playgroud)
对usersCollection函数的重复调用应使用缓存的集合对象,但它不会 - 缓存变量始终未定义.将代码更改为此可修复问题:
return function(callback) {
var cache = arguments.callee;
if (cache.cached) return callback(null, cache.cached);
db.collection(collectionName, function(err, collection) {
return err ? callback(err) : callback(null, cache.cached = collection);
});
}
Run Code Online (Sandbox Code Playgroud)
我仍然对'cache'变量超出范围的原因感到困惑.我究竟做错了什么?