2017-04-16 4 views
5

में सीएसएस विशेषता सेट करें मुझे पॉपओवर में एकल तत्व (id) द्वारा सेट fontStyle विशेषता के साथ समस्या है। मुझे onClick ईवेंट मिलता है, सभी वर्ग तत्वों के लिए शैली (bold फ़ॉन्ट शैली) डालें और फिर एक और शैली (normal) को एक (क्लिक किया गया) तत्व डालने का प्रयास करें। मेरे कोड है:ऑनक्लिक ईवेंट

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

एक demo

सभी वर्ग तत्वों के लिए bold शैली की स्थापना नहीं है काम करता है और संवाद को सही ढंग से पता चलता id तो यह सही तत्व है (this में), लेकिन .css() विधि काम नहीं करता। मैं id की तरह उपयोग करके शैली डालने की कोशिश की:

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

और वहाँ कंसोल में कोई त्रुटि है, लेकिन यह रूप में अच्छी तरह से काम नहीं करता। क्या फ़ॉन्ट स्टाइल को एक अद्वितीय तत्व में सेट करने का कोई और तरीका है?

+1

आपका कोड वास्तव में काम कर रहा है। लेकिन जब पॉपओवर इसे या बाहर क्लिक पर बंद कर देता है और फिर से खुलता है तो प्लगइन फिर से प्रारंभिक स्थिति में फ़ॉन्ट शुरू करता है। –

+0

@DanPhipip मुझे यकीन नहीं है लेकिन शायद आप गलत हैं क्योंकि प्रारंभिक स्थिति नहीं है। पृष्ठ लोड में सभी तत्वों के लिए 'सामान्य' फ़ॉन्ट शैली है और पहले क्लिक करने के बाद (किसी भी तत्व पर) सभी के लिए 'बोल्ड' शैली है। – barmi

+0

समस्या यह है कि, जब भी आप किसी लिंक पर क्लिक करते हैं तो आप अपने पृष्ठ पर रीडायरेक्ट करते हैं और पूरा कोड प्रारंभ से चलता है। अगर आप क्लिक स्टेटस को सेव करना चाहते हैं तो आपको इसे सत्र स्टोरेज में स्टोर करना होगा और स्क्रिप्ट पर अनुरोध शुरू करना होगा। लिंक के बिना इसे आज़माएं और आप सीएसएस काम देखेंगे। एक और विकल्प एमवीसी के साथ एक साइड एप्लिकेशन लिखना और हैश चेंज इवेंट पर सुनना है। (मैं इसके लिए एक ट्यूटोरियल पर काम कर रहा हूं) – TypedSource

उत्तर

2

सीएसएस स्टाइल को हटाने की बजाय क्यों न केवल क्लिक किए गए ऑब्जेक्ट में इसे जोड़ें ??

क्लिक किया वस्तु की आईडी प्राप्त करें और उस का उपयोग करें ...

$(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


अगर वहाँ एक विशेष कारण आप को हटाने की जरूरत है इसे लागू करने के बजाय स्टाइलिंग ...

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

Fiddle for that

संबंधित मुद्दे