我想在我的页面中使用svg图标.我使用的设计师使用Sketch来设计图像并将结果导出到svg中.素描增加了各种id标签导出的代码(注意id="Page-1",id="My-Star"和id="Star-1"属性):
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="My-Star" stroke="#979797" fill="#D8D8D8">
<polygon id="Star-1" points="11.9860934 18.5835921 5.4876995 22 6.7287823 14.763932 1.47147118 9.63932023 8.73689646 8.58359214 11.9860934 2 15.2352904 8.58359214 22.5007157 9.63932023 17.2434045 14.763932 18.4844873 22 "></polygon>
</g>
</g>
</svg>
Run Code Online (Sandbox Code Playgroud)
我直接在html中包含了svg.通过这样做,我id多次介绍相同.除了这种工作方式导致的无效html之外,我需要根据ids 设置svg元素的样式.这是一种不好的做法.
我用css来设置svgs的样式,看看一个例子
问题:在从Sketch导出svgs时,
有没有办法id用classes 替换s ?我可以给设计师一些插件或设置吗?如果没有,从设计人员接收svg资产并在页面中使用它的最佳工作流程是什么?
我正在我的Socket.IO事件和我的应用程序的其余部分之间构建一个中间件层.我这样做是为了让我可以在将来换掉Socket.IO.
我将回调函数存储在一个数组中.当特定事件触发时,我遍历数组并执行回调函数.这就像一个魅力.
问题在于从该数组中删除回调.当需要删除回调函数时,我遍历数组并检查每个数组项以查看它是否===与我想要删除的回调相等(使用).当回调存储在数组中时,这很好.但是,当回调与组合存储时.bind(),等号检查返回false.
我创建了一个(简化的)codepen来演示这个问题:http://codepen.io/petergoes/pen/wWPJdg?edit = 0012 .
我从Socket.IO代码中汲取灵感来编写我的删除方法:https://github.com/socketio/socket.io-client/blob/master/socket.io.js#L1623.但是,出现同样的问题.
最大的问题是:
如何使用该.bind()方法调用两个函数(一个或两个)?
我找到了这个答案如何在javascript中比较2个函数.但是,比较一个函数的字符串版本感觉有点粗略
codepen供参考:
var callbackList = [];
var objA = {
myCallbackFunction: function myCallbackFunction() {
console.log('hello my name is:', this.myName);
}
}
var objB = {
register: function register(callback) {
console.log('register callback');
callbackList.push(callback);
},
remove: function remove(callback) {
console.log('remove callback');
if(callbackList[0] === callback) {
console.log('callback found, splice it');
callbackList.splice(0, 1);
} else {
console.log('callback NOT found!');
} …Run Code Online (Sandbox Code Playgroud)