@hacke2
2015-04-03T12:37:12.000000Z
字数 1382
阅读 1634
未分类
1、组件不要和class绑定,和data-*绑定
this.$el.on('input', '.nba-search-txt', function(e) {//...}
2、应该提供多种方式
scope.on('click', '.nba-sug', function(e) {var $el = $(e.currentTarget),q = $el.data('sug');self.submit(q);self.hideSug();})
3.过滤localstorage特殊字符
var xmlchar = {'&': '&','<': '<','>': '>',"'": ''','"': '"','{': '{','}': '}','@': '@'};
4、没必要改变作用域,改变this
function showSuggest() {var suggest = this.suggest;//...}
5、Suggest和SearchBox耦合太紧,使用订阅/发布方式
self.suggest = new Suggest(self.urlSearch, self, params.suggFixed, params.onDeactivate);
6、提高代码体验
// query add 点击事件名eventName = browser.iPhone? 'touchend': 'click'
7、回退刷新不要放到组件里,放到全局环境
// 浏览器的后退按钮点击 不刷新,清空query处理sm.onpopstate({backFn: function () {// 回退 填充 原先的queryvar $searchbox = $('[data-searchbox]'),query = location.href.match(/q=[^&]*/);// 移除多行显示样式$searchbox.find('.row-wrap').removeClass('more-line').removeClass('fill-query');// 填充 old query$searchbox.find('.se-input').val(query? decode(query[0].replace('q=', '')).replace('+',' '): '')}});
8、可以用bind改变作用域
setTimeout(function () {self.$input.trigger('input')}, timer);
9、
timer = setTimeout(function () {//清除TimerclearTimeout(timer);timer = null;check.call(searchbox);//设置搜索词searchbox.setQuery(self.value);//显示联想词showSuggest.call(searchbox);}, 500);//这个阀值在移动端可以适当提高,因为移动端的输入相对较慢
日期 2015年4月3日
- \X24
闭包
(xx,xx,xx)
逗号表达式
CSS防止位置
全放在body里只渲染一次、、
JS放置在最后,速度快
执行JS取出来后创建script标签