小编Ben*_*jia的帖子

混淆简单变量声明jQuery"$ variable"vs javascript"var"

我有这个简单的鬼文本实现:

HTML代码:

<div id="searchPanel">
     <form method="get" id="searchBox" action="somePage.php">
     <input class="ghText" type="text" name="query" value="search here"/>
     </form>
</div>
Run Code Online (Sandbox Code Playgroud)

jQuery代码:

$(document).ready(function(){
        $txtField = "#searchPanel form input.ghText";
        var value = $($txtField).val();
        $($txtField).focus(function(){
            if($(this).val() == value)
                $(this).val("").removeClass("ghText");
        });
        $($txtField).blur(function(){
            if($(this).val()==""){
                $(this).val(value).addClass("ghText");
            }
        });
});
Run Code Online (Sandbox Code Playgroud)

上面的例子不起作用.当用户将光标聚焦在搜索栏上时,由于某种原因,类"ghText"将不会被删除.

但是现在,如果我将"var value"(变量初始化)和"value"更改为"$ value",如下所示:

$value = $($txtField).val(); 
$(this).val($value).removeClass("ghText");
$(this).val($value).addClass("ghText");
Run Code Online (Sandbox Code Playgroud)

一切都很完美.

我可以去睡觉而不是太担心它..但我很好奇为什么会发生这样的事情?

是因为"this"没有引用正确的对象,或者是因为我尝试将jQuery对象存储在非jQuery变量中,或者是关于其他东西......有人能指出我出了什么问题吗?我一直以为"var x"与"$ x"相同..?

javascript jquery

28
推荐指数
2
解决办法
5万
查看次数

xmlHttpRequest .open()方法中的参数"true"

从我在MDN中读到的参考文献中可以看出

如果为TRUE(默认值),则在服务器的响应尚未到达时,JavaScript函数的执行将继续.

这是AJAX中的A.

我一直在使用AJAX,但当我读到它时,我有点困惑.我认为问题可能是我不清楚地理解AJAX概念.我知道当然AJAX不会刷新页面,这意味着与服务器的连接和响应完全在后台完成.

但根据该引用我可以想象的是,如果我的JavaScript中有这样的代码:

//true, therefore process the function while server retrieves url
var xmlResponse;
var url = "http://example.com/file.xml";
xml_req.open("GET", url, true); 

xml_req.onreadystatechange = function() {
     if(xml_req.readyState == 4 && xml_req.status == 200) {
        if(xml_req.responseText != null)
             xmlResponse = xml_req.responseXML; //server response may not yet arrive
        else {
             alert("failed");
             return false;
        }
     };
xml_req.send(null);
Run Code Online (Sandbox Code Playgroud)

这是否意味着在服务器仍在检索数据的意义上,xmlResponse可能是未定义的?有人可以解释一下AJAX技术中的执行流程究竟是什么?提前致谢.

javascript ajax asynchronous xmlhttprequest

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

JavaScript中的激活和变量对象?

术语"激活对象"只是"变量对象"的另一个名称,还是它们之间实际上有什么区别?我一直在阅读一些关于如何在执行上下文中形成变量作用域的JavaScript文章,从我的观点来看,似乎在大多数文章中他们可以互换地使用这两个术语.

javascript ecma262

25
推荐指数
2
解决办法
5303
查看次数

从unix终端搜索并替换多个文件上的字符串

我们将代码库中的所有静态html页面转换为php页面.第一步是将所有.html文件扩展名更改为.php(我已经这样做了).第二步是更新每个html页面中的所有链接以指向新的php页面.

(例如,在index.php里面我有指向contact.html和about-us.html的链接.既然我们已经将每个.html文件扩展名替换为.php,我们需要将contact.html更改为contact.php,并且同样,关于-us.html到about-us.php).

我现在要做的是在多个文件中搜索特定的字符串.(在许多文件中搜索"contact.html",例如index.php,index2.php,index3.php等等.)之后,用"contact.php"替换所有这些文件中的所有"contact.html" ".

我不熟悉unix命令行,到目前为止,我已经在论坛中看到了其他人的类似问题,但不太明白哪一个可以帮助我实现我想要的.我正在使用cygwin,如果可能的话,我需要在没有perl脚本的情况下解决这个问题,因为我没有安装它.我需要尝试使用sed,grep,find或其他任何东西.

所以,如果你们中的任何人认为这是重复的,请指出我在那里的相关帖子.谢谢你的时间.

unix terminal replace sed

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

NodeJS + MongoDB - 从npm开始安装mongodb服务器实例

我在OSX上运行node.js,刚刚使用目录npm install mongodb下的命令安装了mongodb myapp/node_modules.根据mongodb官方文档,要启动一个mongodb,你只需要./mongodb/bin/mongo在命令行上执行.但是我没有看到任何目录'bin'下调用node_modules/mongodb..

有没有一种特殊的方法来启动mongodb实例与node.js应用程序捆绑在一起?我将如何启动运行的mongodb服务器mongodb://localhost/myapp

我目前也在使用matador(节点的新mvc框架),根据文档,我们以这种方式连接到mongodb服务器:

// app/models/ApplicationModel.js
module.exports = require('./BaseModel').extend(function () {
  this.mongo = require('mongodb') 
  this.mongoose = require('mongoose')
  this.Schema = this.mongoose.Schema
  this.mongoose.connect('mongodb://localhost/myapp') //CONNECT TO MONGODB SERVER...
})
Run Code Online (Sandbox Code Playgroud)

此刻我不认为我有mongodb服务器运行,并且由于上述问题而不知道如何设置它.将欣赏任何链接,答案和指向正确方向的指针.谢谢!

javascript macos mongoose mongodb node.js

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

用于执行自动完成搜索的MongoDB + Node.js + AJAX解决方案

我正在寻找实现类型/自动完成搜索的乐趣.我在mongoDB中的架构中有一些属性,但我希望只能按类别,标题,预览或日期进行搜索.

这是我对单篇文章的mongoDB架构(我使用mongoose作为ORM):

{
    title: { type: String, required: true}
    , preview: { type: String, required: true}
    , body: { type: String, required: true}
    , category: {type: String}
    , created_at: { type: Date, default: Date.now }
}
Run Code Online (Sandbox Code Playgroud)

每次我创建,更新或销毁时,我都必须重新编制索引,以便更新搜索.搜索将自动完成,例如,当我有两篇文章分别标题为"欢迎使用stackoverflow"和"如何避免stackoverflow"并且用户键入一个键时,'t'我会使用AJAX显示两篇文章,因为两者都有字符't'在他们的头衔.我也想强调每一个't'; 在't''to','t'以s 't'ackoverflow,表示查询命中东西.(我希望它看起来与我们在stackoverflow.com上搜索特定'标签'时类似)

现在的问题是我应该使用不同的模式进行索引,还是仅仅坚持我现有的模式?似乎我不会使用包含完整文章的'body'属性,并且其中包含数千个单词,因为我现在不打算进行全文搜索.

  • 标题属性可能只有~45个字符,平均3或4个字.
  • 类别大多只有1个单词,平均9-15个字符.
  • 预览将是最大的数据集,其中包含约150个字符和20个字.

我可能想用trie数据结构来实现它.最重要的是,我可能会说,这样做的一种方法是通过AJAX请求每次击键将被路由到node.js处理程序,然后从那里进行查询到mongoDB将返回每个具有单词的条目有一个字母与用户输入的击键相匹配,作为JSON文件.然后,我将解析该JSON文件并显示每个条目.

那么问题是我如何将trie算法纳入我的计划?另一件事是我每次进行CRUD操作时都需要重建索引.

非常感谢任何有关正确方向的建议/指示或任何有助于我这样做的文章.(我希望做最好的练习/表演方式)谢谢.如果需要澄清这个问题,请告诉我.

javascript ajax trie mongodb node.js

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

cygwin curl,Wget,wget和top"命令未找到"

我很确定我已经安装了包含"net"软件包的cygwin默认软件包,但是每次我尝试运行时控制台都会说"命令未找到" wget并且top.这些命令是单独执行的吗?

unix windows cygwin command

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

node.js在web开发上下文中的位置?

我知道node.js被称为在V8 Javascript引擎上托管的"事件驱动的I/O"服务器端javascript .我访问了node.js网站,然后阅读了wikipedia条目,但是不能完全了解在哪里使用它以及它将如何有用."事件驱动的IO"?"V8 Javascript引擎"?在某些情况下,我看到使用"服务器端"javascript有点矫枉过正.我在node.js维基百科条目中使用了这段代码:

var http = require('http');

http.createServer(function (request, response) {
    response.writeHead(200, {'Content-Type': 'text/plain'});
    response.end('Hello World\n');
}).listen(8000);

console.log('Server running at http://127.0.0.1:8000/');
Run Code Online (Sandbox Code Playgroud)

我一直在想,运行服务器真的有一个重要的目的,特别是服务于应用程序前端部分执行的javascript文件吗?

我还在github中分叉了node.js repo以了解它的工作原理,结果发现它的一些模块是用C++编写的.那么它毕竟不是一个JavaScript?

有人可以给我一个清楚的解释吗?对不起,如果问题不明确或者其他什么,我只是一个初学者.将欣赏任何意见/建议.谢谢

javascript c++ event-driven node.js

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

使用sbt 0.11.0安装Scala 2.9.1/Lift 2.4-M4

我正在学习在Scala中进行Web开发.目前正试图在MAC OSX中使用sbt 0.11安装最新版本的Scala/lift.到目前为止,我已经完成了以下工作:

1.安装了Scala 2.9.1 final
2.从https://github.com/harrah/xsbt/wiki/Setup下载最新的sbt 0.11
3.为sbt设置路径环境

我现在要做的是从http://liftweb.net/download获取最新的电梯框架(2.4-M4),以便我可以尝试使用jetty在localhost:8080上运行lift_basic项目.我有几个问题;

  • 因为在0.11上我将不得不这样做:

    resolvers += "Web plugin repo" at "http://siasia.github.com/maven2" addSbtPlugin("com.github.siasia" %% "xsbt-web-plugin" % "0.1.2")

    而不是做libraryDependencies += ...我应该把我的对象解析器(检查下面的代码)放在哪里,这将使我能够安装jetty和web插件?所以,在lift_basic文件夹下,它们应该在Project/build/LiftProject.Scala中,还是只删除LiftProject.scala并在Project/Build.scala下创建Build.scala?

    object Resolvers { val webPluginRepo = "Web plugin repo" at "http://siasia.github.com/maven2" val jettyRepo = "Jetty Repo" at "http://repo1.maven.org/maven2/org/mortbay/jetty" }

    object Dependencies {
          // web plugin
          val webPluginDeps = Seq(
            "org.mortbay.jetty" % "jetty" % "6.1.26" % "jetty", // The last part is "jetty" not "test".
            "javax.servlet" % "servlet-api" % …
    Run Code Online (Sandbox Code Playgroud)

macos scala jetty lift sbt

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

用于构建Trie数据结构的Ruby代码的说明

所以我有从维基百科中抓取的这个ruby代码,我修改了一下:

@trie = Hash.new()
def build(str)
    node = @trie
    str.each_char { |ch|
      cur = ch
      prev_node = node
      node = node[cur]
      if node == nil
        prev_node[cur] = Hash.new()
        node = prev_node[cur]
      end
    }
  end

build('dogs')

puts @trie.inspect
Run Code Online (Sandbox Code Playgroud)

我第一次跑这在控制台IRB,每一次我输出node,它只是让每次给我一个空的哈希值{},但是当我实际调用该函数建立与参数'dogs'字符串,它实际上做的工作,和产出{"d"=>{"o"=>{"g"=>{"s"=>{}}}}},这是完全正确的.

这可能是一个Ruby问题,而不是关于算法如何工作的实际问题.我真的没有足够的Ruby知识来破译那里发生的事情.

ruby irb

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