我有这个简单的鬼文本实现:
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"相同..?
从我在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文章,从我的观点来看,似乎在大多数文章中他们可以互换地使用这两个术语.
我们将代码库中的所有静态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或其他任何东西.
所以,如果你们中的任何人认为这是重复的,请指出我在那里的相关帖子.谢谢你的时间.
我在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服务器运行,并且由于上述问题而不知道如何设置它.将欣赏任何链接,答案和指向正确方向的指针.谢谢!
我正在寻找实现类型/自动完成搜索的乐趣.我在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'属性,并且其中包含数千个单词,因为我现在不打算进行全文搜索.
我可能想用trie数据结构来实现它.最重要的是,我可能会说,这样做的一种方法是通过AJAX请求每次击键将被路由到node.js处理程序,然后从那里进行查询到mongoDB将返回每个具有单词的条目有一个字母与用户输入的击键相匹配,作为JSON文件.然后,我将解析该JSON文件并显示每个条目.
那么问题是我如何将trie算法纳入我的计划?另一件事是我每次进行CRUD操作时都需要重建索引.
非常感谢任何有关正确方向的建议/指示或任何有助于我这样做的文章.(我希望做最好的练习/表演方式)谢谢.如果需要澄清这个问题,请告诉我.
我很确定我已经安装了包含"net"软件包的cygwin默认软件包,但是每次我尝试运行时控制台都会说"命令未找到" wget并且top.这些命令是单独执行的吗?
我知道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?
有人可以给我一个清楚的解释吗?对不起,如果问题不明确或者其他什么,我只是一个初学者.将欣赏任何意见/建议.谢谢
我正在学习在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)所以我有从维基百科中抓取的这个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知识来破译那里发生的事情.