포트폴리오를 동적으로 정렬합니다. http://shoeshinedesign.com/css/portfolio/jQuery를 사용하여 데이터 유형 내의 특정 문자열을 찾는 방법은 무엇입니까?
첫 번째로 나열된 프로젝트에는 "todd-ao"및 "soundelux"카테고리가 있습니다. 위로 필터 버튼은 필터 버튼의 li
클래스와 특정 프로젝트의 data-type
을 연결하여 jQuery를 통해 프로젝트를 정렬합니다.
필터 버튼이 하나의 클래스로 표시되기 때문에 data-type
매개 변수에 두 개의 카테고리가있을 때마다 jQuery 스크립트는 data-type
의 각 특정 단어를 인식하지 못합니다.
data-type
에있는 여러 단어를 허용하도록 jQuery를 수정하고 그에 따라 버튼을 정렬해야합니다.
<!-- FILTER BUTTONS -->
<ul class="portfoliofilter">
<li class="all">
<a href="#">All</a>
</li>
<li class="todd-ao">
<a href="#">Todd-AO</a>
</li>
<li class="soundelux">
<a href="#">Soundelux</a>
</li>
</ul>
<!-- PROJECT LISTING -->
<ul id="portfoliolist3column">
<li class="portfolio" data-type="todd-ao soundelux">
<!--
THIS PROJECT WON'T SORT DUE TO DATA-TYPE
NOT SPECIFICALLY MATCHING FILTER LI CLASS
-->
</li>
<li class="portfolio" data-type="todd-ao">
<!-- SORTS -->
</li>
<li class="portfolio" data-type="soundelux">
<!-- SORTS -->
</li>
</ul>
jQuery를 마크 업 : (조건의 else
에 초점)
jQuery('.portfoliofilter li').click(function(e) {
jQuery(".portfoliofilter li a").addClass("portfoliobutton_noselect");
jQuery(".portfoliofilter li a").removeClass("portfoliobutton");
jQuery(this).children('a').removeClass("portfoliobutton_noselect");
jQuery(this).children('a').addClass("portfoliobutton");
var filterClass = jQuery(this).attr('class');
if (filterClass == 'all') {
var $filteredData = $data.find('.portfolio');
} else {
var $filteredData = $data.find('.portfolio[data-type=' + filterClass + ']');
}
jQuery($list).quicksand($filteredData, {
duration: 500,
easing: 'swing',
adjustHeight: 'dynamic',
enhancement: function() { }
}, function() {
addPrettyPhoto();
});
return false;
});
가
$data.find
단순히 찾아 보게하는 방법이 있나요
여기 내 HTML 마크가 달려 있습니다 문자열이 아니고 filterClass
과 정확히 일치하지 않습니까?
EDIT 여기 아래 @pimvdb 의해 제공된 바와 같이, 최종의 문맥 코드이다.
jQuery('.portfoliofilter li').click(function(e) {
jQuery(".portfoliofilter li a").addClass("portfoliobutton_noselect");
jQuery(".portfoliofilter li a").removeClass("portfoliobutton");
jQuery(this).children('a').removeClass("portfoliobutton_noselect");
jQuery(this).children('a').addClass("portfoliobutton");
var filterClass = jQuery(this).attr('class');
if (filterClass == 'all') {
var $filteredData = $data.find('.portfolio');
} else {
var $filteredData = $data.find(".portfolio").filter(function() {
return ~jQuery(this).data("type").split(" ").indexOf(filterClass);
});
}
jQuery($list).quicksand($filteredData, {
duration: 500,
easing: 'swing',
adjustHeight: 'dynamic',
enhancement: function() {
}
}, function(){
addPrettyPhoto();
});
return false;
});
당신의 HTML에는 그 클래스와 'data-type' 속성을 가진 요소가 없습니다. 그 맞습니까? – pimvdb
네 말이 맞아. 여기에 게시 할 때 실수로 삭제했습니다. 나는 그것을 다시 추가했다. 그것은 사이트에 있습니다. –