0

わかりましたので、quicksand jquery フィルターを使用しています。ここで、フィルターのいずれかが選択されているときに、すべての画像に特定の効果 (javascript で入力したもの) を追加したいと考えています。フィルタ リストは次のとおりです。

<ul class="filter"> 
   <li class="current all"><a href="#">Fred</a></li> 
   <li class="daisy"><a href="#">daisy</a></li> 
   <li class="richard"><a href="#">richard</a></li> 
   <li class="ama"><a href="#">ama</a></li> 
   <li class="santy"><a href="#">santy</a></li> 
   <li class="washington"><a href="#">washington</a></li> 
   <li class="deuces"><a href="#">deuces</a></li> 
</ul> 

したがって、次の構文を使用して、選択したフィルターを決定し、そこから jquery の「魔法」を実行します。

    $(".filter a").click(function(e){

    $(".filter li").removeClass("current"); 

    // Get the class attribute value of the clicked link
    var $filterClass = $(this).parent().attr("class");

    if ( $filterClass == "all" ) {
        var $filteredPortfolio = $portfolioClone.find("li");
    } else {
        var $filteredPortfolio = $portfolioClone.find("li[data-type~=" + $filterClass + "]");
        $filteredPortfolio.addClass("row3");
    }

選択したフィルターのすべての画像 (写真など) に特殊効果を追加する$("$filteredPortfolio").addClass("row3")ために、最後の行に表示されるこのコードを追加しましrow3た。これは、ブラウザーでこれをデバッグするときに、クラスを持つすべての要素で効果が機能するためです。 、動作しません。私は何を間違っていますか?私はまだ自分自身をjqueryの初心者だと考えているので、答えが明らかな場合はご容赦ください。

4

1 に答える 1

1

最後の行は次のようになります。

$filteredPortfolio.addClass("row3");

.find() はすでに jQuery オブジェクトを生成しているため、追加の $() は必要ありません

HTML で定義された data-type 属性がある場合は問題ありませんが[data-type=..]、.data('type', val) jQuery API を介して設定している場合は機能しません。フィルターがそれを見つけるには、.attr('data-type', val) を使用する必要があります。jQuery の新しいバージョンでは、実際には別のものであるデータと属性をより適切に区別しています。それらを混同し、それらを交換可能に使用するために使用されたjQueryは、古いバージョンで機能した可能性があります。

于 2012-06-26T18:03:57.747 に答える