Toggle navigation
Toggle navigation
This project
Loading...
Sign in
fe
/
yohobuywap-node
·
Commits
Go to a project
GitLab
Go to group
Project
Activity
Files
Commits
Pipelines
0
Builds
0
Graphs
Milestones
Issues
0
Merge Requests
0
Members
Labels
Wiki
Forks
Network
Create a new issue
Download as
Email Patches
Plain Diff
Browse Files
Authored by
郭成尧
9 years ago
Commit
c10831a23e17d8ed16424cc05c9dbfb2f7cdaf66
1 parent
3719fa16
'filter-js'
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
59 additions
and
28 deletions
public/js/plugin/filter.js
public/js/plugin/filter.js
View file @
c10831a
...
...
@@ -10,14 +10,16 @@ var $ = require('yoho-jquery'),
var
$filter
;
var
fCbFn
,
hCbFn
;
//
筛选和关闭的回调
var
fCbFn
,
hCbFn
;
//筛选和关闭的回调
// 隐藏筛选界面
var
missStatus
;
//是否忽略选中状态
//隐藏筛选界面
function
hideFilter
()
{
$filter
.
addClass
(
'hide'
);
}
//
显示筛选界面
//显示筛选界面
function
showFilter
()
{
$filter
.
removeClass
(
'hide'
);
}
...
...
@@ -27,8 +29,12 @@ function highlightMainItem() {
var
$mainItem
=
$
(
'.filter-body .classify'
);
$mainItem
.
on
(
'touchstart'
,
'.shower'
,
function
()
{
var
bpIdData
=
$
(
this
).
attr
(
'data-bp-id'
)
||
''
;
$mainItem
.
removeClass
(
'highlight'
);
$
(
this
).
addClass
(
'highlight'
);
$
(
document
).
trigger
(
'shouldSendBpData'
,
[
bpIdData
]);
}).
on
(
'touchend touchcancel'
,
'.shower'
,
function
()
{
$
(
this
).
removeClass
(
'highlight'
);
});
...
...
@@ -46,7 +52,7 @@ function highlightSubItem() {
});
}
//
主筛选项Tap事件句柄
//主筛选项Tap事件句柄
function
classifyTapEvt
(
$this
)
{
if
(
$this
.
hasClass
(
'active'
))
{
return
;
...
...
@@ -55,9 +61,10 @@ function classifyTapEvt($this) {
$this
.
siblings
(
'.active'
).
removeClass
(
'active'
);
$this
.
addClass
(
'active'
);
}
//
子筛选项选中处理
//子筛选项选中处理
function
setSubClassify
(
$this
)
{
var
$sub
=
$this
.
closest
(
'.sub-classify'
);
...
...
@@ -77,8 +84,8 @@ function setSubClassify($this) {
shower
=
$
.
trim
(
$shower
.
html
());
$shower
.
html
(
shower
.
substring
(
0
,
shower
.
indexOf
(
'</span>'
)
+
7
)
+
// 拆分出shower的title
html
.
substring
(
0
,
html
.
indexOf
(
'<i'
))
// 拆分选中筛选值
shower
.
substring
(
0
,
shower
.
indexOf
(
'</span>'
)
+
7
)
+
//拆分出shower的title
html
.
substring
(
0
,
html
.
indexOf
(
'<i'
))
//拆分选中筛选值
);
if
(
$this
.
index
()
===
0
)
{
...
...
@@ -90,7 +97,7 @@ function setSubClassify($this) {
return
$sub
;
}
//
子筛选项Tap句柄
//子筛选项Tap句柄
function
subClassifyTapEvt
(
$this
)
{
var
id
=
$this
.
data
(
'id'
);
...
...
@@ -105,52 +112,41 @@ function subClassifyTapEvt($this) {
});
}
if
(
hCbFn
)
{
hCbFn
();
}
hideFilter
();
}
//
初始化筛选
//初始化筛选
function
initFilter
(
opt
)
{
var
filterHammer
;
//
注册回调
//注册回调
fCbFn
=
opt
.
fCbFn
;
hCbFn
=
opt
.
hCbFn
;
// 是否忽略选中状态
window
.
missStatus
=
opt
.
missStatus
;
missStatus
=
opt
.
missStatus
;
highlightMainItem
();
highlightSubItem
();
$filter
=
$
(
'.filter-mask'
);
// 页面没有filter的时候什么都不做
if
(
!
$filter
[
0
])
{
return
;
}
filterHammer
=
new
Hammer
(
$filter
[
0
]);
filterHammer
.
on
(
'tap'
,
function
(
e
)
{
var
$this
=
$
(
e
.
target
),
$cur
;
e
.
preventDefault
();
// 防止透点
// e.preventDefault();//防止透点
if
(
$this
.
closest
(
'.filter-body'
).
length
>
0
)
{
$cur
=
$this
.
closest
(
'.sub-item'
);
if
(
$cur
.
length
>
0
)
{
//
tap subclassify
//tap subclassify
$cur
=
$this
.
closest
(
'li'
);
subClassifyTapEvt
(
$cur
);
}
else
{
//
tap classify
//tap classify
$cur
=
$this
.
closest
(
'.classify-item'
);
e
.
srcEvent
.
stopPropagation
();
...
...
@@ -165,21 +161,56 @@ function initFilter(opt) {
}
}
});
if
(
opt
.
isScroll
){
$
(
"ul.sub-classify"
).
each
(
function
(){
$
(
this
).
wrap
(
"<div class='sub-classify-farther' data-type='"
+
$
(
this
).
data
(
"type"
)
+
"'></div>"
);
// $(this).removeClass("sub-classify");
var
lastY
=
0
,
y
=
0
;
var
$slider
=
$
(
this
);
$slider
.
on
(
'touchstart'
,
function
(
e
)
{
lastY
=
e
.
originalEvent
.
touches
[
0
].
pageY
;
});
$slider
.
on
(
'touchmove'
,
function
(
e
)
{
var
curY
=
e
.
originalEvent
.
touches
[
0
].
pageY
;
var
deltaY
=
curY
-
lastY
;
var
height
=
$
(
this
)[
0
].
scrollHeight
;
var
limit
=
height
-
$
(
this
).
parent
().
height
();
y
=
y
+
deltaY
;
if
(
y
<
limit
*
-
1
)
y
=
limit
*
-
1
;
if
(
y
>
0
)
y
=
0
;
var
translate
=
'translate3d(0,'
+
y
+
'px,0)'
;
$
(
this
).
css
({
'-moz-transform'
:
translate
,
'-ms-transform'
:
translate
,
'transform'
:
translate
,
'-webkit-transform'
:
translate
,
});
lastY
=
curY
;
});
$slider
.
on
(
'touchend'
,
function
(
e
)
{});
});
}
}
//
重置筛选面板
//重置筛选面板
function
resetFilter
()
{
if
(
typeof
$filter
===
'undefined'
)
{
return
;
}
//
重置子筛选项
//重置子筛选项
$
(
'.sub-classify'
).
each
(
function
()
{
setSubClassify
(
$
(
this
).
children
(
':first-child'
));
});
//
重置主筛选项
//重置主筛选项
classifyTapEvt
(
$
(
'.classify > :first-child'
));
}
...
...
Please
register
or
login
to post a comment