我昨晚和一位同事交谈,jQuery出现了 - 他从来没有遇到jTemplates或曾经考虑过可能存在的东西......
它让我思考 - jQuery中存在多少其他非常有用的功能,因为存在完全可维护的替代品而未被使用?
我希望这个问题不会被关闭 - 我知道它不遵循现代Stack-Overflow QA范例,但我认为它可以形成一个有用的资源,这样的问题曾经是常见的,所以C#,javascript等有类似的产品.
我将从明显的开始:
选择者需要我说更多?
外观修改器 - 可以轻松应用于DOM元素的各种视觉效果.看到这里.
jQuery UI与ThemeRoller一起使用特别有用.还有许多小部件和交互.到目前为止,我只使用了Dialogue和Slider控件,两者都表现出色.看到这里.
.ajax和它的变种(.get(),. load()等) - 承担了制作ajax请求的所有痛苦.看到这里.
.live将事件处理程序附加到现在和将来与选择器匹配的所有元素!天才!看到这里.
jTemplates - 替代jQuery.tmpl()函数,这个插件允许您创建功能强大的html模板,用于呈现客户端数据.看这里.
qTip2 - 仍处于正式测试阶段,但这个插件只是创建工具提示的最佳选择.看到这里.
延迟 - 管理异步代码的一种干净而明智的方法.请参阅此处获取基本信息和更多链接.
请添加我错过的任何内容,我会相应更新我的列表.
我一直在学习 Node (7.4.0) 中的 ES6 Promise,因为我想应用它们来处理串行通信。我做出了一个承诺,它是许多较小承诺的集合,允许我使用发送者、事件监听器和超时来序列化与设备的通信。但是,我不太理解 .then() 链接,因为我需要添加一些额外的闭包,这些闭包看起来与我在许多示例中看到的不同,这让我相信我误解了一些基本的东西。考虑这个函数(我删除了所有的prototype/this.code以使其更小):
function sendAck(command, ack, timeout) {
return new Promise((resolve, reject) => {
if (gReady === undefined) reject('not ready');
// each of these three functions returns a promise
let sendPromise = createSend(command);
let ackPromise = createAck(ack);
let timeoutPromise = createTimeout(timeout);
// p1 = we hear a response, or timeout waiting for one
let p1 = Promise.race([ackPromise, timeoutPromise]);
// both p1 -and- send function need to resolve
let p2 = Promise.all([p1, sendPromise]);
p2.then(values => resolve(values)).catch(err …Run Code Online (Sandbox Code Playgroud) 我有以下脚本
<select id="select1">
<option value="1">1day</option>
<option value="2">2day</option>
<option value="3">3day</option>
</select>
<select id="select2">
<option value="1">1day</option>
<option value="2">2day</option>
<option value="3">3day</option>
</select>
Run Code Online (Sandbox Code Playgroud)
和jquery
$("#select2").change(function() {
var max_value = parseInt($("#select2 :selected").val());
var min_value = parseInt($("#select1 :selected").val());
if(max_value < min_value)
{
$("#select1").val($(this).val());
}
});
Run Code Online (Sandbox Code Playgroud)
而现在,无论如何我无法理解 - 如果选项元素的值是整数,为什么我必须使用parseInt()?在某些情况下,如果没有parseInt(),它将无法工作.
谢谢
我正在按照教程显示工厂模式以在javascript中创建对象.下面的代码让我难以理解它的工作原理.
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>6-2.htm</title>
</head>
<body>
<script type="text/javascript">
function createAddress(street, city, state, zip) {
var obj = new Object();
obj.street = street;
obj.city = city;
obj.state = state;
obj.zip = zip;
obj.showLabel = function() {
//alert(this.street + "\n" + this.city + ", " + this.state + " " + this.zip);
//var obj;
alert(obj.street + "\n" + obj.city + ", " + obj.state + " " + obj.zip);
};
return obj;
};
var JohnAddr = …Run Code Online (Sandbox Code Playgroud) 昨天我发现了这个功能:
function clone(obj) {
return typeof obj === 'undefined' ?
this : (clone.prototype = Object(obj), new clone);
}
Run Code Online (Sandbox Code Playgroud)
我虽然在Javascript中看到了很多,但这种语法对我来说不得而知:
clone.prototype = Object(obj), new clone
Run Code Online (Sandbox Code Playgroud)
谁能解释我怎么读这个?你能给我链接到正确的定义吗?我在Mozilla的MDC中找不到它,也不知道如何在网上找到它,但这是我第一次看到这种语法.感谢您的努力.
最终解决方案
我根据这里的答案做了一些测试,我找到了:
var b;
b=alert('test'),6;
alert(b); // alert undefined
b=5,alert('test2');
alert(b); // alert 5
Run Code Online (Sandbox Code Playgroud)
感谢christoph研究我们发现了更多:
var a, b, c;
a = 1, 2; // a is 1
(b = 1), 2; // b is 1 - same as above!
c = (1, 2); // c is 2
Run Code Online (Sandbox Code Playgroud)
啊,我也在IE6上测试它,它的工作原理,所以这必须是旧的语法,没有关于它的信息?:(奇怪......
你们两个都给了很好的解决方案,感谢这里的解决方案!
首先,原谅我的hacky代码,我只是想尝试一下,我第一次学习javascript.基本上,给定字符串"abc!random {3}"将意味着返回以"abc"开头并以0-3开始的随机数结束的字符串.
这是我有的:
var pattern=/!random{([^{]*?)}/gi;
var text="abc!random{3}def!random{4}ghi!random{!random{3}}";
while (pattern.test(text))
{
text=text.replace(pattern, Math.random() * parseInt("$1"));
}
Run Code Online (Sandbox Code Playgroud)
问题是parseInt函数.似乎1美元没有传递给它......它的价值被清除或者其他东西.如果我做:
text=text.replace(pattern, "$1");
Run Code Online (Sandbox Code Playgroud)
它正确地返回{}之间的内容,因此正则表达式正在工作,匹配存储在$ 1中.但是,只要我将它用作$ 1的参数,它的值似乎就被清除了.是什么赋予了?
我正在向函数发送一个字符串作为参数,但我已经在该名称中有一个全局变量,我想得到该变量的值,但它的发送为未定义的..
我的示例代码
我有一个数组如[0] [0],reg [0] [1],reg [1] [0],reg [1] [0],reg [2] [0],reg [2] [ 1]
我有一些全局变量,如tick1,tick2,tick3 ......
它的值为0,1或2
在我打电话的功能中
calc_score(id) //id will return as either tick1,tick2,tick3
{
alert(eval("reg[id][1]")); // it should return the value of reg[0][1] if id is 0
}
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
id不会是数字它将是字符串..所以我该怎么做?
我正在尝试遍历我的总计,以获得我的网络应用程序的总计.到目前为止,我正在使用的代码如下:
function calcAllFields() {
var name = parseFloat($('div [name = total[]]').text());
var totArray = $.makeArray(name);
var total = 0;
for (var i = 0; i < totArray.length; i++) {
total += totArray[i];
}
$("#target1").text(total);
}
Run Code Online (Sandbox Code Playgroud)
不是添加整数,而是将某些东西作为字符串读取.说我要加200 + 50,而不是250我得到20050.谁能指出我做错了什么?谢谢!
我从最近几天开始学习javascript,我把它读作脚本语言.我想知道它与其他脚本有何不同.它在哪里运行?我的意思是我的代码编译到哪里或错误被捕获?我甚至想知道任何用于学习javascript的好的在线教程.
function genEnemy(a) {
//javascript:alert(en[0]+'\n'+genEnemy(en[0])+'\n'+en[0])
with (Math) {
a[1]=round(a[1]*(.5+random()))
a[2]=round(a[2]*(1+random()))
for (var b=0;b<5;b++) a[3][b]=round(a[3][b]*(a[3][b]/2+random()*a[3][b]/10))
for (var b=0;b<a[4].length;b++) random()<it[a[4][b]][3]/10?a[4][b]=0:0
}
return a
}
Run Code Online (Sandbox Code Playgroud)
根据每个敌人阵列的基础生成敌人的统计数据的脚本.(RPG游戏)问题是,当我期望它返回包含新统计数据的数组时,它还将敌人数组设置为新数组.为什么是这样?显然你可以看到问题是如何由此引起的(基础被改变,所以弱小的敌人可以变得更加强大).如何阻止它在en(敌人值数组)中设置数组?