小编Lan*_*don的帖子

通过jQuery为未来创建的元素添加CSS规则

我有一个不寻常的问题.我做了很多次这样的事情:

$('#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可能是最"正确的",虽然它需要更多的工作才能进入总是正常工作的应用程序代码,而这不是我想要花费的精力.

如果我将来不得不重写(或写一些类似的东西),我会调查 …

javascript css jquery

53
推荐指数
4
解决办法
4万
查看次数

多个ajax调用等待最后一个加载,然后执行

我有多个同时运行的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,你可以用它来检查呼叫是否有效.并且该列表中的第三个元素似乎是最初的请求(虽然我不确定).这对我没用. …

ajax jquery

15
推荐指数
1
解决办法
2万
查看次数

phonegap ipad/iphone,在这两款设备上都有一个应用程序

所以我一直在做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不同.

iphone ipad ios cordova

7
推荐指数
1
解决办法
6602
查看次数

python http服务器,多个同时请求

我开发了一个使用龙卷风用python编写的相当广泛的htt​​p服务器.如果没有设置任何特殊内容,服务器将阻止请求,并且一次只能处理一个.请求基本上访问数据(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)

谢谢你的帮助!

python http tornado

6
推荐指数
1
解决办法
5658
查看次数

各种文件类型,doc,dwg,image的在线编辑器

我的服务器上有各种文件类型的媒体存档.如果用户想要更新该文件,他必须将文件下载到本地计算机,使用桌面软件(Word,AutoCAD等)进行编辑,然后重新上载文件.这对我的用户来说是一种痛苦.有没有人遇到这个问题并在过去解决了它.我知道用桑巴,但是这不是正是我想要的.有没有可以帮助我编辑服务器上的文件的工具?我认为有点像Google Docs,你的文件实际上位于Googleland的某个地方,但你可以在浏览器中访问和编辑它.我想要编辑的文件是:

  • .doc
  • .dwg 软件(AutoCAD)
  • .jpg (那里有一个很好的图像编辑客户端吗?)

我选择的语言是PHP,但如果必须,我可以做任何事情.

底线是我有一个doc,例如,在我的服务器上的某个目录中.我希望用户编辑该文档的内容,并尽可能减少对用户的麻烦.

php editing ms-word autocad

5
推荐指数
1
解决办法
3803
查看次数

将变量从目标c返回到javascript

我有一个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中?

javascript objective-c cordova

3
推荐指数
1
解决办法
3106
查看次数

webgl与第三方插件(unity3d),浏览器中的最佳选择

我的任务是在浏览器中渲染和操作3d对象,并且真的需要一个强大的应用程序.我所做的研究显示了两个主要选择.我可以在html5中使用新的webgl工具.或者我可以使用一个浏览器插件,例如unity3d(我确定还有其他人,对于这个问题,它是等效的).(我还缺少其他选项吗?)我对应用程序的需求是相当标准的,但是,这些是焦点:

(1)最重要的部分是场景的分辨率.我想要尽可能多的多边形/点数.我希望,希望有100万个多边形/点,1000万个多边形/点,5000万个多边形/点?什么是现实可能的?

(2)场景基本上是静态的,我会加载我的场景然后我只是想绕过它并探索那种方式.我不需要不断改变我的场景.

权衡利弊,我认为webgl的缺点是没有IE支持(尚未).并且使用Unity会给用户带来不便,因为他们强迫他们安装插件(我认为这是一个巨大的障碍).如果你拿走那些,两者之间是否有任何性能差异?一个人会给我更多的多边形吗?我认为它们是相同的,因为它们都可以直接访问机器上的相同硬件.

任何关于此事的经验或想法都将不胜感激......

3d html5 unity-game-engine webgl

3
推荐指数
1
解决办法
5919
查看次数

node.js mongo连接峰值,写入失败,连接池

我有一个非常简单的日志应用程序,用于在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)

mongodb node.js

2
推荐指数
1
解决办法
976
查看次数

python到php的转换

我正在尝试将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)

php python

1
推荐指数
1
解决办法
135
查看次数