我最近需要附加一些动态创建的数据LI elements
.在我的第一个例子中,我使用.data()
的方式类似
var _newli = $('<li>foobar</li>');
_newli.data('base', 'ball');
// append _newli to an `ul`
Run Code Online (Sandbox Code Playgroud)
那...... 非常慢.这个逻辑发生在一个循环中,很容易长到500多个项目,花了很长时间!有时它甚至打破了javascript执行时间框架.
所以我改为$.data()
.不知何故,将数据附加到对象上比使用方法调用快8倍.data()
.所以现在看起来像
var _newli = $('<li>foobar</li>');
$.data(_newli[0], 'base', 'ball');
// append _newli to an `ul`
Run Code Online (Sandbox Code Playgroud)
这确实是更快的,但是仍需要3-4秒(!)来构建我的所有元素(在我的实际代码中,每个元素有6个调用$ .data).
所以我真的很困惑,我问自己为什么要使用.data()
或者$.data()
无论如何?我可以将我的数据附加到DOM object
.所以我做了
var _newli = $('<li>foobar</li>');
_newli[0].base = 'ball';
// append _newli to an `ul`
Run Code Online (Sandbox Code Playgroud)
瞧,哇让我震惊,那是快得令人难以置信!我无法相信这种情况如此好,没有任何不利之处.所以这实际上是我的问题.到目前为止,我在网上找不到这种技术的任何缺点.有关于您可以使用这种方式创建的循环引用的读取,但AFAIK"仅"在IE上,并且仅在您参考时objects
.
有想法的专家吗?
更新
感谢您的好评和帖子.简短更新@patrick dw:
你是对的,我DOM element
在使用时通过了底层$.data()
.它甚至不能与jQuery对象一起使用,至少不如预期的那样.关于使用一个对象并通过它的想法, …
纵观Project Server 2010的SDK(发现这里在.net反射,我发现一些有趣的事情是让我困惑.
显然,SvcProject.ProjectClient
该类ProjectServerServices.dll
继承自System.ServiceModel.ClientBase<Project>
,这是一个实现System.IDisposable
接口的抽象类.但是,当我检查SvcProject.ProjectClient
类(不是抽象的)时,没有Dispose
方法.是什么赋予了?我认为从接口继承的每个方法都必须在具体的实现中实现(否则接口的用途是什么)..NET Reflector对我说谎吗?微软出于某种原因绕过了这个要求吗?这是怎么回事?
我不确定为什么这个Pickle示例没有显示两个字典定义.据我所知,"ab +"应该意味着pickle.dat文件被附加到并且可以从中读取.我是整个泡菜概念的新手,但网上的教程似乎不仅仅是初始存储.
import cPickle as pickle
def append_object(d, fname):
"""appends a pickle dump of d to fname"""
print "append_hash", d, fname
with open(fname, 'ab') as pickler:
pickle.dump(d, pickler)
db_file = 'pickle.dat'
cartoon = {}
cartoon['Mouse'] = 'Mickey'
append_object(cartoon, db_file)
cartoon = {}
cartoon['Bird'] = 'Tweety'
append_object(cartoon, db_file)
print 'loading from pickler'
with open(db_file, 'rb') as pickler:
cartoon = pickle.load(pickler)
print 'loaded', cartoon
Run Code Online (Sandbox Code Playgroud)
理想情况下,我希望使用for循环构建一个字典,然后将key:value对添加到pickle.dat文件,然后清除字典以节省一些RAM.
这里发生了什么?
我在客户的机器上部署了一个GWT应用程序.作为一项持续的开发,我们不得不不时发布应用程序的新改进版本.每当我们发布新版本时,我们经常会遇到客户端浏览器缓存旧脚本脚本的问题,并且有一段时间它会表现得很糟糕,因为它尝试使用的数据与它不完全兼容.解决这个问题的最佳方法是什么?目前我必须告诉用户清除他们的浏览器缓存以获得新版本,但是他们不必这样做会很好.
我需要匹配一个以该字符串可接受长度为前缀的字符串。
例如,{3}abc
将匹配,因为该abc
部分是3
字符长。{3}abcd
会因为失败abcd
是不 3
长的字符。
我会使用^\{(\d+)\}.{\1}$
(N
在花括号内捕获一个数字,然后是任何字符N
时间),但似乎重复构造中的值必须是一个数字(或者至少,它不会接受反向引用)。
例如,在 JavaScript 中这会返回 true:
/^\{(\d+)\}.{3}$/.test("{3}abc")
虽然这返回假:
/^\{(\d+)\}.{\1}$/.test("{3}abc")
这是否可以在单个正则表达式中完成,或者我是否需要将其分为两个阶段,例如:
/^\{(\d+)\}/.test("{3}abc") && RegExp("^\\{" + RegExp.$1 + "\\}.{" + RegExp.$1 + "}$").test("{3}abc")
为了发送POST请求,我需要枚举给定对象的所有属性.该对象可能是动态的也可能不是动态的.我正在寻找最优雅的解决方案.这是我到目前为止所得到的:
function createURLVariables(params:Object):URLVariables
{
// Workaround: Flash Player performs a GET if no params are passed
params ||= {forcePost: true};
var vars:URLVariables = new URLVariables();
var propertyName:String;
var propertyList:XMLList = describeType(params)..variable;
var propertyListLength:int = propertyList.length();
// A dynamic object won't return properties in this fashion
if (propertyListLength > 0)
{
for (var i:int; i < propertyListLength; i++)
{
propertyName = propertyList[i].@name;
vars[propertyName] = params[propertyName];
}
}
else
{
for (propertyName in params)
vars[propertyName] = params[propertyName];
}
return vars;
}
Run Code Online (Sandbox Code Playgroud)
一个潜在的问题是,这不会返回getter(访问器)的属性.
每当我在CRM中创建自定义实体时,类型都以"new_"为前缀.任何属性都是如此.如何修改/删除?
我的googlemaps fitBounds函数有问题.
for (var i = 0; i < countries.length; i++) {
var country = countries[i];
var latlng = new google.maps.LatLng(parseFloat(country.lat), parseFloat(country.lng));
mapBounds.extend(latlng);
}
map.fitBounds(mapBounds);
Run Code Online (Sandbox Code Playgroud)
某些图标将显示在视口/可见区域之外.
想法?
提前致谢.
我目前有一个不断增长的Django生产服务器,它上面运行着所有的前端和后端服务.我可以继续增长该服务器越来越大,但我想尝试将主服务器作为我的后端服务器,并创建多个前端服务器,运行apache/nginx并远程连接到主生产后端服务器.
我现在正在使用slicehost,所以我不认为我可以从内部网上运行多个服务器中受益.我该怎么做呢?
c# ×2
javascript ×2
.net ×1
apache-flex ×1
browser ×1
caching ×1
date ×1
django ×1
dom ×1
dynamics-crm ×1
fitbounds ×1
flash ×1
google-maps ×1
gwt ×1
html ×1
interface ×1
jquery ×1
pickle ×1
post ×1
properties ×1
python ×1
regex ×1
string ×1