0

私は窮地に立たされています。私はjavascriptで2つの変数を比較し、一致した場合は親要素にクラスを割り当てようとしています。しかし、私はこれで成功していません。考えられるすべてのコードを検索して試しましたが、機能させることができませんでした。私がこれまでに書いたコードは次のとおりです。

$('div#encased a').click(function(){
        $('ul#filter .current').removeClass('current');
        var class_name = ($(this).parent().attr('class').replace('-',' '));
        var className = class_name.toString();
        alert(className);
        $('ul#filter li').each(function(){
            /*1st version
            var filterValue = $(this).text().toLowerCase();
            var filterValstr = filterValue.toString();
            alert(filterValstr);
            if(filterValstr==className)
            {
                alert("match!")
                $(this).parent().addClass('current');   
            }*/

            /*2nd version*/
            if($(this).text().toLowerCase() == class_name)
            {
                $(this).parent().addClass('current');   
            }
            /*this works which according to me means it is not entering the if clause
            else{
                $(this).parent().fadeOut('slow').addClass('hidden');    
            }*/
        });
    });

私の知る限り、else関数を使用しようとしたので、値はifコマンド内にまったく入りません。私がやっているいくつかのばかげたエラーがあると確信しています。ここで2つの方法を試し、1つにコメントしましたが、どちらかが正しいかどうかを確認するために、両方をここに示しました。

基本的に、div#encased要素の画像をクリックすると、画像のクラス名が取得され、上のフィルターメニューのテキストと比較されます。一致したフィルターテキストに一致する場合は、currentのクラスを割り当てる必要があります。あなたが私が説明しようとしていることを理解していることを願っています。助けてください。ありがとう

4

1 に答える 1

1

あなたのコードは明確ではなく、スパゲッティのようなものですが、おそらくあなたの問題は空白にあります、それらをトリミングしてみてください

var filterValue = $.trim($(this).text().toLowerCase());

そして、あなたはそれstring.toString()が文字列を返すことを知っているべきです...
例:

var str = "bla bla bla";
alert(str.toString === str); // true!
于 2012-06-10T07:59:33.150 に答える