0

リンクを構成するLIアイテムを含むULがあります。各リンクには、適切なBG画像を表示するための「linkItem」クラスと「roomActive」または「roomInactive」のいずれか、およびクリックされたLIアイテムを表示するために関数に渡されるIDがあります。

私はこれを達成するために次のコードを使用しようとしています。

$(".roomLink")[id].removeClass('roomActive').addClass('roomInactive');

これを実行すると、「Uncaught TypeError:Object#has nomethod'removeClass'」というエラーが返されます。

また、jQuery .css( "background")を使用してみたところ、「Uncaught TypeError:Object#has nomethod'css'」が返されました。

何か案は?

4

4 に答える 4

0

試してみてください$($(".roomLink")[id]).removeClass.....オブジェクトの配列にインデックスを付けるときに返されるものはjqueryオブジェクトではないため、おそらくそうです。

于 2012-05-23T20:10:02.423 に答える
0

要素に ID がある場合は、ID で移動します。

$("#" + id).removeClass('roomActive').addClass('roomInactive');

ただし、クリック ハンドラーを直接 li にバインドすると、次のことができます。

$(".roomLink").click(function(){ 
    $(this).removeClass('roomActive').addClass('roomInactive');
});

次のようにcssをいじることができます:

$(this).css("background-image","url(imageurl)");

スタイルシートに入れるように、css プロパティ名と値を渡す必要があります。

于 2012-05-23T20:10:11.640 に答える
0

要素にアクセスすると[]、jQuery オブジェクトではなく DOM 要素が返されます。代わりに試してくださいeq(id)(id がインデックスであると仮定します)。

別のリンクがクリックされたときにクラスを切り替えようとしている場合は、このようなものがうまく機能します。

$('li').click( function() {
    //swap inactive class in for currently active link item
    $('li.active').removeClass('active').addClass('inactive');
    //add active class to the clicked one
    $(this).removeClass('inactive').addClass('active');
});
于 2012-05-23T20:10:24.873 に答える
0

以下のようにしてみてください、

$(".roomLink").eq(id).removeClass('roomActive').addClass('roomInactive');

は、 removeClass および addClassidのインデックスであると仮定します。liこの仮定は、使用方法に基づいています。(インデックスのように)

コード$(".roomLink")[id]は dom オブジェクトであり、addClass/removeClassメソッドはありません。

于 2012-05-23T20:09:37.947 に答える