小编Dav*_*ave的帖子

加载CSS后触发的jQuery事件?

我的页面上有几个链接(在a中<div id="theme-selector">),允许您更改CSS样式表:

$('#theme-selector a').click(function(){
  var path = $(this).attr('href');
  $('head link').remove();
  $('head').append('<link type="text/css" href="'+path+'" rel="stylesheet" />');
  return false;
});
Run Code Online (Sandbox Code Playgroud)

现在,在我更改了页面上的样式后,我希望使用以下代码(我在$('head').append调用后放置)获取新的背景颜色:

var bgcolor = $('body').css('background-color');
alert(bgcolor); 
Run Code Online (Sandbox Code Playgroud)

问题是,我认为浏览器下载新样式表需要一些时间,我有时会在警报消息中获得旧的背景颜色.是否有一些我可以绑定的事件只会在页面上加载所有样式表后提醒我?

目前,我所能想到的只是使用setTimeout(function(){}, 5000);不太好的,因为如果在页面上加载所有CSS需要更长/更短的时间.

如果我需要澄清任何内容,请告诉我,我可以提供更多代码.

javascript css jquery events javascript-events

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

去模板名称

html/template(和text/template)包中,template.New具有以下签名:

func New(name string) *Template
Run Code Online (Sandbox Code Playgroud)

究竟name用于什么?我已经扫描了文档(以及一些来源),但无济于事.我只是用空字符串实例化我的所有模板,它似乎没有什么区别.我为什么要打扰一个名字?

即使对于命名模板,这两者似乎是等价的:

template.Must(template.New("").Parse(`{{ define "body" }}Body{{ end }}`))
template.Must(template.New("body").Parse(`Body`))
Run Code Online (Sandbox Code Playgroud)

https://play.golang.org/p/wKzCHdLf2S

go go-templates

17
推荐指数
2
解决办法
3338
查看次数

将参数传递给函数闭包

我试图理解在创建一个带有参数的匿名函数与使该函数充当闭包之间的Go的区别.这是一个区别的例子.

带参数:

func main() {
  done := make(chan bool, 1)
  go func(c chan bool) {
    time.Sleep(50 * time.Millisecond)
    c <- true
  }(done)
  <-done
}
Run Code Online (Sandbox Code Playgroud)

作为封闭:

func main() {
  done := make(chan bool, 1)
  go func() {
    time.Sleep(50 * time.Millisecond)
    done <- true
  }()
  <-done
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,第一种形式何时优于第二种形式?你有没有使用参数来做这种事情?我唯一能看到第一种形式有用的是func(x, y)从另一个函数返回a时.

closures go

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

将byte []字符串转换为Integer值的快速方法

我正在从磁盘读取一个大文件.该文件只包含编号为普通旧ASCII的数字.目前,我正在阅读大块,然后做这样的事情:

byte[] token;  // bytes representing a bunch of numbers
int n = Integer.parseInt(new String(token));
Run Code Online (Sandbox Code Playgroud)

换句话说,我正在转换为String,然后将String解析为Integer.我想知道是否有办法使用快速操作,如移位和二进制算术?

我怀疑这可以更快.例如,数字1,2,3的原始字节是49,50,51.黑客的任何想法?

java optimization

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

测试失败:误报或漏报

如果我的单元测试失败,但底层代码确实有效,那么这会被称为误报还是假阴性

(这是上下文.我并行运行了一堆测试,有些测试失败.我按顺序运行它们都会通过.所有代码实际上都有效,并行测试运行器只有一个问题.)

我的问题只是与命名法有关.我找到了人们称之为的例子.在阅读维基百科之后,我认为这是一个误报,但值得注意的是,Andrew Ng在他的机器学习课上说:

如果测试通过,即使代码被破坏,这也是误报.如果测试失败,当代码没有被破坏时,这是一个假阴性.

testing naming-conventions

6
推荐指数
2
解决办法
1808
查看次数

io.Pipe 中的竞争条件?

我有一个函数,它返回Readeran 的末尾io.Pipe并启动一个 go-routine,将数据写入Writer它的末尾,然后关闭管道。

func GetPipeReader() io.ReadCloser {
    r, w := io.Pipe()
    go func() {
        _, err := io.CopyN(w, SomeReaderOfSize(N), N)
        w.CloseWithError(err)
    }()
    return r
}

func main() {
    var buf bytes.Buffer
    io.Copy(&buf, GetPipeReader())
    println("got", buf.Len(), "bytes")
}
Run Code Online (Sandbox Code Playgroud)

https://play.golang.org/p/OAijIwmtRr

这似乎在我的测试中总是有效,因为我得到了我编写的所有数据。但API 文档让我有点担心:

func Pipe() (*PipeReader, *PipeWriter)

Pipe 创建同步内存管道。[...] 一端的读取与另一端的写入相匹配,[...] 没有内部缓冲。

func (w *PipeWriter) CloseWithError(err 错误) 错误

CloseWithError 关闭编写器;从管道的读取部分进行的后续读取将不返回任何字节并返回错误 err,如果 err 为 nil,则返回 EOF。

我想知道的是,这里可能的竞争条件是什么?我的 go 例程会写入一堆数据,然后在我读取全部数据之前关闭管道,这是否合理?

我是否需要使用通道来发出何时关闭的信号?基本上,可能会出现什么问题。

io go race-condition

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

Ruby对象可与Fixnum相媲美

我想在Ruby中实现一个<=>与任何Fixnum 相当(使用运算符)的类,反之亦然.这最终将在一个范围内使用.这是我班级的概要:

class N
  include Comparable
  attr :offset
  def initialize(offset = 0)
    @offset = offset
  end
  def succ
    N.new(@offset + 1)
  end
  def +(offset)
    N.new(@offset + offset)
  end
  def <=>(other)
    return @offset <=> other.offset if other.kind_of? N
    return 1  # N is greater than everything else
  end
end

def n; N.new(0); end
Run Code Online (Sandbox Code Playgroud)

现在,当在n..n+2和中使用时,这种方法很有用n..999,但不是在1..n.这是因为n <=> 1工作但1 <=> n不工作(返回).

有没有什么方法可以让Fixnum将我的N类视为可比较的对象?你的想法很赞赏:)

ruby

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

快速Javascript继承:理解__proto__

鉴于以下构造函数,

Dog = function(name, age, ...){
    Animal.call(this, name, age, ...);
    // And some other stuff that dogs do
}
Run Code Online (Sandbox Code Playgroud)

我使用以下代码行从Animal类中复制我的方法和属性,

Dog.prototype = new Animal();
Run Code Online (Sandbox Code Playgroud)

你能不能告诉我它有何不同之处

Dog.prototype.__proto__ = Animal.prototype;
Run Code Online (Sandbox Code Playgroud)

因为它们似乎具有相同的效果.

javascript inheritance prototype-programming

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

SVG不透明度如何叠加?

我想知道,SVG元素如何叠加它们的不透明度?更具体地说,如果我有一个元素opacity: 0.4,重叠元素的不透明度需要什么才能产生opacity: 0.8重叠?

重叠时产生的不透明度是多少? https://jsfiddle.net/HZr7v/18/

svg opacity

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

什么是Go的net.Listener Addr()用于?

Go的net.Listener界面如下所示:

type Listener interface {
    // Accept waits for and returns the next connection to the listener.
    Accept() (Conn, error)

    // Close closes the listener.
    // Any blocked Accept operations will be unblocked and return errors.
    Close() error

    // Addr returns the listener's network address.
    Addr() Addr
}
Run Code Online (Sandbox Code Playgroud)

Addr实际使用的是什么?如果我必须实现我自己的监听器,只是返回一个空的,Addr().String()但接受和关闭的连接就好了,会产生什么影响?

go

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