2017-04-16 8 views
5

popboxの1つの要素にfontStyle属性(id)が設定されているという問題があります。 onClickイベントを取得し、すべてのクラス要素にスタイル(boldフォントスタイル)を入れてから、別のスタイル(normal)を1つの要素に追加しようとします。私のコードは次のとおりです。onclickイベントでCSS属性を設定します。

$(document).on('click', '.listElement', function() { 
    $('.listElement').css('font-weight', 'bold'); 
    alert(this.id); 
    $(this).css('font-weight', 'normal'); 
}); 

動作し、ダイアログはので、これは(thisで)右の要素であるが、.css()メソッドは動作しません正しくid示し、すべてのクラス要素のためのboldスタイルを設定するdemo

があります。私のようなidを使用してスタイルを入れてみました:

$('#A').css('font-weight', 'normal'); 

をし、そこに、コンソールにはエラーはありませんが、それは同様に動作しません。 fontStyleを単一の固有の要素に設定する他の方法はありますか?

+1

あなたのコードは、実際に働いています。しかし、ポップオーバーがクリックされたときにポップオーバーが閉じると、プラグインはフォントを初期状態に初期化します。 –

+0

@DanPhilip初期状態がないので間違っているかもしれませんが、おそらく間違っています。ページロードでは、すべての要素のフォントスタイルが「普通」であり、最初のクリック(要素上)後には、すべてに「太字」スタイルがあります。 – barmi

+0

問題はリンクをクリックするたびに完全なコードが開始されるたびにページにリダイレクトされることです。クリックステートを保存する場合は、それをsessionStorageに保存してスクリプトの開始を要求する必要があります。リンクなしで試してみると、cssが動作するのが見えます。別のオプションは、MVCで片側のアプリケーションを作成し、hashChangeイベントでリッスンすることです。 (私はそれのためのチュートリアルに取り組んでいます) – TypedSource

答えて

2

CSSスタイリングを削除するのではなく、クリックしたオブジェクトに追加しないでください。

削除する必要がある具体的な理由がある場合

$(document).on('click', '.listElement', function() { 
var clickEl = this.id; //ID of clicked object 
$('.listElement').not('#' + clickEl).css('font-weight', 'bold'); //bolds everything which is NOT the clicked item. 
alert(this.id); 
}); 

または

$(document).on('click', '.listElement', function() { 
$('.listElement').not('#' + this.id).css('font-weight', 'bold'); //bolds everything which is NOT the clicked item. 
alert(this.id); 
}); 

Updated Fiddle


...クリックしたオブジェクトのIDを取得し、それを使用スタイリングは決してそれを適用するよりも...

$(document).on('click', '.listElement', function() { 
$('.listElement').css('font-weight', 'bold'); 
alert(this.id); 
$('.listElement#' + this.id).css('font-weight', 'normal'); 
}); 

Fiddle for that

関連する問題