我有一个不寻常的问题.我做了很多次这样的事情:
$('#selector').css('color','#00f');
Run Code Online (Sandbox Code Playgroud)
我的问题是我创建了一个<div id="selector">,我调用上面的命令,它工作正常.
现在,在另一个事件上,稍后,我从DOM中删除该元素,并在以后使用相同的ID再次添加它.这个元素现在没有color:#00f.
有没有办法可以在CSS中添加规则,这样它会影响将来使用相同id/ 创建的项目class?我喜欢jQuery,但是使用普通JavaScript的任何东西都可以.
它必须是动态的,我不知道要放入CSS文件的类.此外,我计划在应用程序的过程中更改一个属性几个不同的时间.例如,设置colorto black,to blue,to red和back black.
我接受了@lucassp的回答,这就是我最终的结果:
function toggleIcon(elem, classname)
{
if($(elem).attr('src')=='img/checkbox_checked.gif')
{
$(elem).attr('src', 'img/checkbox_unchecked.gif')
//$('.'+classname).hide();//this was the old line that I removed
$('html > head').append($('<style>.'+classname+' { display:none; }</style>'));
}
else
{
$(elem).attr('src', 'img/checkbox_checked.gif')
//$('.'+classname).show();//this was the old line that I removed
$('html > head').append($('<style>.'+classname+' { display:block; }</style>'));
}
}
Run Code Online (Sandbox Code Playgroud)
我还想说@Nelson可能是最"正确的",虽然它需要更多的工作才能进入总是正常工作的应用程序代码,而这不是我想要花费的精力.
如果我将来不得不重写(或写一些类似的东西),我会调查 …
我有多个同时运行的ajax查询,我希望它们等待最后一个返回,然后在所有ajax调用上运行成功处理程序.有关简化示例,请考虑:
$.ajax({//ajax call 1
url:page1.php,
success: function(data1){
//do something with data1
}
});
....
$.ajax({//ajax call 2
url:page2.php,
success: function(data2){
//do something with data2
}
});
//consider more than just two concurrent requests
Run Code Online (Sandbox Code Playgroud)
假设所有请求都是同时发送的.由于它们是异步的,它们将在不同的时间返回.假设一个请求需要100ms才能返回,另一个请求需要3000毫秒才能返回.我显然不知道哪一个会先返回.它们都以某种方式更新DOM,我希望在一次更新时一次性向观众显示这些更改.我该怎么做呢?
我能想到的最好的方法是将data1和data2保存为全局变量.然后有一个计数器变量,每次返回成功时都会计数.然后,在counter == TOTAL_NUM_REQUESTS调用updateAll()之类的函数时,然后运行所有全局变量并将它们放在需要的位置.但这似乎很乱,容易出错.加上那将是很多全局变量.
我理想的是让成功处理程序在返回时休眠,然后在我将所有这些数据作为返回值进行计数的情况下,向所有这些程序发送唤醒消息并且它们可以继续执行.这似乎是最干净的,但我不知道在javascriptland中有这样的任何功能.
有没有人对此有任何光鲜的想法?
答案更新
感谢Lee,我能够得到一个解决方案.我的解决方案与他的下方类似.我构建了一个async分配给$ .ajax调用的变量列表.最初那些ajax调用的成功处理程序仍然被调用,所以我删除了它们并将它们放在另一个函数中,这个函数随后被when我写的这个块调用.我传递results给这样的函数:
var results = [];
results.push(async1);
results.push(async2);
... for all the results ...
$.when.apply(this, results).done(function() {
for(var i=0;i<arguments.length;i++){
dataobject=arguments[i][0]
if(dataobject.variousattribute)
mySuccessHandlerFirstGuy(dataobject)
else if(dataobject.anotherattribute)
mySuccessHandlerSecondGuy(dataobject)
//etc ....
}
};
Run Code Online (Sandbox Code Playgroud)
参数对象花了一些时间来弄清楚它是什么.这是一个2d数组(列表列表).第一个索引表示与给定的ajax请求相对应的返回对象.它似乎是有序的,但最好让你的服务器返回你可以查找的东西并相应地写一个if/else块.然后,在该给定元素中,该列表中似乎有3个元素.第一个是从服务器返回的值,即您想要的值.第二个总是一个字符串success,你可以用它来检查呼叫是否有效.并且该列表中的第三个元素似乎是最初的请求(虽然我不确定).这对我没用. …
所以我一直在做phonegap开发一段时间,并在应用程序商店中制作了几个应用程序.我已经制作了iphone和ipad应用程序并将它们完全分开.我知道苹果允许提交可以为两种设备格式化的单个应用程序,我的问题是如何通过phonegap完成这项工作?我知道我可以编辑项目设置并为目标设备选择ipad/iphone.但是我在代码中如何才能使其正常工作?
因为它是html,我控制html(和jquery)中的大小调整.例如,在我的iPhone应用程序中,我可能有:
<img src="asdf.jpg" width="480">
Run Code Online (Sandbox Code Playgroud)
那个相同的ipad应用程序将是:
<img src="asdf.jpg" width="1024">
Run Code Online (Sandbox Code Playgroud)
如果我可以在我的www文件夹中有两个html文件,比如index.html和index-ipad.html,然后它们共享常见的img,css和js文件夹,那真的很棒.这可能吗?
我已经广泛检查了关于phonegap的文档,但找不到任何内容.有人能指点我做一个教程吗?我真的很讨厌在应用程序商店中为同一内容添加多个应用程序.
编辑以下评论
也许我不会在html中使用width属性,也许我会这样做:
<img src="asdf_ipad.jpg">
Run Code Online (Sandbox Code Playgroud)
和:
<img src="asdf_iphone.jpg">
Run Code Online (Sandbox Code Playgroud)
两个图像的大小已经设置为两个设备.无论如何,我可以处理html/js/css,我只需要知道如何实现一个"开关",使ipad呈现与iphone不同.
我开发了一个使用龙卷风用python编写的相当广泛的http服务器.如果没有设置任何特殊内容,服务器将阻止请求,并且一次只能处理一个.请求基本上访问数据(mysql/redis)并在json中打印出来.在最坏的情况下,这些请求可能需要一秒钟的时间.问题是请求进来需要很长时间(3s),然后一个简单的请求立即进入,需要5ms处理.好吧,因为第一个请求将需要3秒,第二个请求在第一个请求完成之前不会启动.因此第二个请求需要> 3秒才能处理.
我怎样才能让这种情况变得更好?无论其他请求如何,我都需要第二个简单的请求才能开始执行.我是python的新手,对apache/php更有经验,其中没有两个单独请求相互阻塞的概念.我已经调查了mod_python以模拟php示例,但这似乎也阻止了.我可以更改龙卷风服务器以获得我想要的功能吗?我读到的每个地方都说龙卷风非常适合处理多个同时发出的请求.
这是我正在使用的演示代码.我有一个睡眠命令,我用它来测试并发是否有效.睡觉是一种测试并发性的公平方法吗?
import tornado.httpserver
import tornado.ioloop
import tornado.web
import tornado.gen
import time
class MainHandler(tornado.web.RequestHandler):
@tornado.web.asynchronous
@tornado.gen.engine
def handlePing1(self):
time.sleep(4)#simulating an expensive mysql call
self.write("response to browser ....")
self.finish()
def get(self):
start = time.time()
self.handlePing1()
#response = yield gen.Task(handlePing1)#i see tutorials around that suggest using something like this ....
print "done with request ...", self.request.path, round((time.time()-start),3)
application = tornado.web.Application([
(r"/.*", MainHandler),
])
if __name__ == "__main__":
http_server = tornado.httpserver.HTTPServer(application)
port=8833;
http_server.listen(port)
print "listening on "+str(port);
tornado.ioloop.IOLoop.instance().start()
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!
我的服务器上有各种文件类型的媒体存档.如果用户想要更新该文件,他必须将文件下载到本地计算机,使用桌面软件(Word,AutoCAD等)进行编辑,然后重新上载文件.这对我的用户来说是一种痛苦.有没有人遇到这个问题并在过去解决了它.我知道用桑巴,但是这不是正是我想要的.有没有可以帮助我编辑服务器上的文件的工具?我认为有点像Google Docs,你的文件实际上位于Googleland的某个地方,但你可以在浏览器中访问和编辑它.我想要编辑的文件是:
.doc.dwg 软件(AutoCAD).jpg (那里有一个很好的图像编辑客户端吗?)我选择的语言是PHP,但如果必须,我可以做任何事情.
底线是我有一个doc,例如,在我的服务器上的某个目录中.我希望用户编辑该文档的内容,并尽可能减少对用户的麻烦.
我有一个phonegap应用程序,我想在Documents文件夹中运行一个非常简单的"存在文件"命令.我得到它主要工作.在js中,我有:
fileDownloadMgr.fileexists("logo.png");
......
PixFileDownload.prototype.fileexists = function(filename) {
PhoneGap.exec("PixFileDownload.fileExists", filename);
};
Run Code Online (Sandbox Code Playgroud)
然后在目标C中,我有:
-(BOOL) fileExists:(NSMutableArray*)paramArray withDict:(NSMutableDictionary*)options;{
NSString * fileName = [paramArray objectAtIndex:0];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *newFilePath = [documentsDirectory stringByAppendingString:[NSString stringWithFormat: @"/%@", fileName]];
BOOL isMyFileThere = [[NSFileManager defaultManager] fileExistsAtPath:newFilePath];
//i'm stuck here
}
Run Code Online (Sandbox Code Playgroud)
我可以使用NSLog将其打印到控制台,以查看逻辑是否正常并且BOOL设置正确.但我需要在javascript世界中使用该变量.我知道stringByEvaluatingJavaScriptFromString,但这只会执行javascript,即调用回调函数.这不是我需要的,我需要(在javascript中):
var bool = fileDownloadMgr.fileexists("logo.png");
if(bool) alert('The file is there!!!!!!');
Run Code Online (Sandbox Code Playgroud)
我需要做什么才能将目标c中的bool返回到javascript中?
我的任务是在浏览器中渲染和操作3d对象,并且真的需要一个强大的应用程序.我所做的研究显示了两个主要选择.我可以在html5中使用新的webgl工具.或者我可以使用一个浏览器插件,例如unity3d(我确定还有其他人,对于这个问题,它是等效的).(我还缺少其他选项吗?)我对应用程序的需求是相当标准的,但是,这些是焦点:
(1)最重要的部分是场景的分辨率.我想要尽可能多的多边形/点数.我希望,希望有100万个多边形/点,1000万个多边形/点,5000万个多边形/点?什么是现实可能的?
(2)场景基本上是静态的,我会加载我的场景然后我只是想绕过它并探索那种方式.我不需要不断改变我的场景.
权衡利弊,我认为webgl的缺点是没有IE支持(尚未).并且使用Unity会给用户带来不便,因为他们强迫他们安装插件(我认为这是一个巨大的障碍).如果你拿走那些,两者之间是否有任何性能差异?一个人会给我更多的多边形吗?我认为它们是相同的,因为它们都可以直接访问机器上的相同硬件.
任何关于此事的经验或想法都将不胜感激......
我有一个非常简单的日志应用程序,用于在mongo中存储数据的节点中编写.它运行良好一段时间(一小时),然后连接数量激增,我的所有写入在连接断开之前失败了一段时间(可能是它们超时).我知道调用db.close()很重要,节点的基于事件的异步方面使得调用的位置变得微不足道.
在我的请求处理程序中,我有:
//val is an object previously defined
database.writeRecord(val)
database.userExists(val['cookie'], function(c){//returns 1 if user exists, 0 if not
if(c==0)
database.createNewUserProfile(val['cookie'],'campaign',val, {cid:cid, event:event});
else
database.attachEventToUserProfile(val['cookie'], 'campaign',val, {cid:cid, event:event});
});
Run Code Online (Sandbox Code Playgroud)
然后,在我的数据库处理程序中,我有以下函数(原谅这个复制/粘贴的长度):
function writeRecord(object_passbyreference){
//make a deep copy
var value = new Object();
for (var attr in object_passbyreference) {
value[attr] = object_passbyreference[attr];
}
if(additionalattributes!=undefined){//is there anything else i want to throw in this record?
for (var attr in additionalattributes)
value[attr] = additionalattributes[attr];
}
dbname='beacon';
collectionname='testcollection';
var db = new Db(dbname, new …Run Code Online (Sandbox Code Playgroud) 我正在尝试将python脚本的一部分转换为php.我知道其中的大部分内容,但是我遇到了与位移相关的问题(我认为?),即使在PHP中我也没有多少经验!有人可以将这个python函数翻译成php吗?
def setBit(value, position, on):
if on:
mask = 1 << position
return (value | mask)
else:
mask = ~(1 << position)
return (value & mask)
Run Code Online (Sandbox Code Playgroud)