所以,假设我有一大堆元素,我想要附加事件监听器.例如,我希望每行在单击时变为红色的表格.
所以我的问题是哪一个是最快的,哪个使用最少的内存.我明白这是(通常)权衡,所以我想知道每个人的最佳选择.
使用表示例,假设有一个所有行元素的列表,"rowList":
选项1:
for(var r in rowList){
rowList[r].onclick = function(){ this.style.backgroundColor = "red" };
}
Run Code Online (Sandbox Code Playgroud)
我的直觉是这是最快的,因为只有少一个指针调用,但是内存最多,因为每个行列表都有自己的函数副本,如果onclick函数很大,这可能会很严重.
选项2:
function turnRed(){
this.style.backgroundColor = "red";
}
for(var r in rowList){
rowList[r].onclick = turnRed;
}
Run Code Online (Sandbox Code Playgroud)
我猜这将比上面的那个慢一点(哦不,再多一个指针取消引用!)但内存密集程度要低得多,因为浏览器只需要跟踪函数的一个副本.
选项3:
var turnRed = function(){
this.style.backgroundColor = "red";
}
for(var r in rowList){
rowList[r].onclick = turnRed;
}
Run Code Online (Sandbox Code Playgroud)
我认为这与选项2相同,但我只是想把它扔出去.对于那些想知道这和选项2之间的区别是什么:定义函数的JavaScript差异
奖金部分:Jquery
同样的问题:
$('tr').click(function(){this.style.backgroundColor = "red"});
Run Code Online (Sandbox Code Playgroud)
与:
function turnRed(){this.style.backgroundColor = "red"};
$('tr').click(turnRed);
Run Code Online (Sandbox Code Playgroud)
和:
var turnRed = function(){this.style.backgroundColor = "red"};
$('tr').click(turnRed);
Run Code Online (Sandbox Code Playgroud) 好的StackOverflow - 这是一个奇怪的.
问题
所以我有一个"按钮"(实际上只是一个带有javascript onclick监听器的div),它通过页面加载时的json从数据库中获取文本.(鉴于申请,这是有道理的).我们不支持IE <9.
问题是div中的文本没有出现在IE9的新实例中.但是,当我打开开发人员控制台(试图弄清楚出了什么问题)并刷新页面时,IE就好像什么都没有出错并正确填充按钮文本.它适用于所有其他浏览器.
什么.
代码
这就是我在PHP中所拥有的:
<div class="dark-button notification-button" data-notification="NOTIF_A">
<span class="float-right">▶</span>
</div>
Run Code Online (Sandbox Code Playgroud)
Javascript(使用Jquery 1.8.0):
$('document').ready(refreshNotificationButtons('.notification-button'));
function refreshNotificationButtons(buttons){
var buttons = typeof buttons != 'object' ? $('.notification-button') : buttons;
var allNotifications = {};
var buttonsCount = 0;
buttons.each(function(){
var button = $(this);
if(typeof button.attr('id') == 'undefined') button.attr('id', 'notif-button-' + buttonsCount);
buttonsCount ++;
if(typeof allNotifications[button.attr('data-notification')] == 'undefined'){
allNotifications[button.attr('data-notification')] = [button.attr('id')];
} else {
allNotifications[button.attr('data-notification')].push(button.attr('id'))
}
});
$.get(
'/notifications/get_notifications/' + $.map(allNotifications, function(x, abbr){return abbr}).join(','),
'',
function(data){
$(data).each(function(){ …Run Code Online (Sandbox Code Playgroud) 我是 Google 电子表格的新用户。
我希望 «B» 列中的每个单元格都是 «A» 列(在同一行)中但除以 5 的结果。
B1、B2、B3 等(商)应为 A1、A2、A3 等(被除数)除以 5(除数)。
例如:B1 = (A1)/5。
我知道一一执行的公式是将 ie 放置=DIVIDE(A1,5)在 B1 单元格中,然后放置=DIVIDE(A2,5)在 B2 单元格中,等等——但这会像手动计算每个单元格一样复杂。
目标是自动填写A[*same row number*]/5( B[*same row number*]) 列中( )的商。
但是,我如何将我对 [相同行号] 的要求翻译/替换为 Google 电子表格理解的语言或公式,因为我猜有一个公式可以解决这个问题?
我正在做一些花哨的js片段来自动将文本框的值复制到后面的跨度中.
<input name="data[ask_admin_name]" onkeyup=
"$("#admin_name").html($(this).val())"
type="text" id="ask_admin_name">
Run Code Online (Sandbox Code Playgroud)
然后,
<span id="admin_name"></span>
Run Code Online (Sandbox Code Playgroud)
什么是最快的,最简单,最jQuery的-EST的方式来去除HTML相关的标记出这一点,喜欢<和>?
我可以使用更多的js行来做,但我想知道这个任务是否有特定的功能,例如,$(this).val().strip('<>');?
我有一些代码作为我正在进行的javascript周末项目的一部分.我的问题在最后一行.据我所知,我应该可以打电话Floater.create()而不必打电话Floater.prototype.create().为什么我需要额外的.prototype?没有它,会抛出错误:Floater() has no method "create"
function Floater(){}
Floater.prototype.create = function(){
//do stuff
}
$(document).ready(function(){
//do stuff
runStartup();
});
function runStartup(){
loginFloater = new Floater;
Floater.prototype.create();
// as far as I know, this should run as just Floater.create(),
// but that throws an error.
}
Run Code Online (Sandbox Code Playgroud) 我目前有以下哪些有用,但我对Scala很新,我想知道是否有更好的方法.
val utmcsr = """.*utmcsr=(.*)""".r
val utmcmd = """.*utmcmd=(.*)""".r
val utmccn = """.*utmccn=(.*)""".r
val utmctr = """.*utmctr=(.*)""".r
val utmz = "14002953.138298057.2.2.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided)"
utmz.split("""\|""").map {
case utmcsr(s) => List("utmscr", s)
case utmcmd(s) => List("utmcmd", s)
case utmccn(s) => List("utmccn", s)
case utmctr(s) => List("utmctr", s)
case _ => ""
}.foldLeft(Map[String,String]()) {
(m, s) =>
val key = s.asInstanceOf[List[String]].head
val value = s.asInstanceOf[List[String]].tail.head
m + (key -> value)
}
}
Run Code Online (Sandbox Code Playgroud)
我的主要问题是: