2010-08-25 18 views
18

सेटिंग आसान है; जब ऑनक्लिक-इवेंट निकाल दिया जाता है तो मैं एक बटन (इस मामले में) को एक बटन जोड़ने में सक्षम होना चाहता हूं। मेरी समस्या यह है कि मुझे बटन को स्वयं को फ़ंक्शन के पैरामीटर के रूप में पास करने का कोई तरीका नहीं मिला है।jQuery एडक्लास ऑनक्लिक

<asp:Button ID="Button" runat="server" onclick="addClassByClick(this)"/> 

और फिर इस तरह एक JavaScript फ़ंक्शन कुछ:: मैं की तरह कुछ करना चाहते हैं

function addClassByClick(button){ 
    button.addClass("active") 
} 

मैं जानता हूँ कि मैं यहाँ त्रुटियों की एक बहुत कुछ मिल गया है, लेकिन यही कारण है कि मैं हूँ पोस्टिंग। मैंने jQuery के साथ और jQuery के बिना अलग-अलग परिदृश्यों का प्रयास किया है, लेकिन मैं हमेशा एक टूटे हुए समाधान के साथ समाप्त होता हूं (क्लिक अचानक अचानक बंद हो जाता है, क्लास नहीं जोड़ा जाता है आदि) इसलिए मैंने प्रो से पूछने का फैसला किया।

कोई सुझाव जो मैं कोशिश कर सकता हूं? पढ़ने के लिए धन्यवाद और सभी मदद संपादित करें!

+0

जैसा कि कई लोगों ने बताया, आपके बटन की प्रस्तुत आईडी "बटन" नहीं होगी। हालांकि, आप इसे कक्षा के बजाय आईडी द्वारा संदर्भित कर सकते हैं (jquery चयनकर्ता कक्षाओं से आईडी पर बेहतर प्रदर्शन करते हैं), $ ("# <% = बटन। क्लाइंट आईडी%>") – mikemanne

उत्तर

36

यह .addClass() उपयोग करने के लिए एक jQuery तत्व होने की जरूरत है, तो यह इस तरह $() में लिपटे होने की जरूरत है:

function addClassByClick(button){ 
    $(button).addClass("active") 
} 

एक बेहतर समग्र समाधान विनीत स्क्रिप्ट, उदाहरण के लिए होगा:

<asp:Button ID="Button" runat="server" class="clickable"/> 
jQuery में फिर

:

$(function() {      //run when the DOM is ready 
    $(".clickable").click(function() { //use a class, since your ID gets mangled 
    $(this).addClass("active");  //add the class to the clicked element 
    }); 
}); 
+0

आपके पहले उदाहरण में, होगा मैं वास्तव में बटन को फ़ंक्शन के लिए तर्क के रूप में पास करने के लिए "यह" उपयोग करने में सक्षम हूं? क्या मुझे कुछ कास्टिंग करने की ज़रूरत नहीं है या वह सब कुछ संभाला जा सकता है? – Phil

+0

@ फिल - हाँ आप पहले उदाहरण में 'यह' पास कर सकते हैं, यह एक डोम तत्व है, यह सब कुछ जरूरी है :) मैं आपको जवाब के दूसरे भाग की तरह यहां एक अविभाज्य विकल्प का उपयोग करने का आग्रह करता हूं, हालांकि यह बहुत आसान है बनाए रखें। –

+0

@ निक - मैं निश्चित रूप से कोशिश करूंगा, लेकिन मैं अभी तक jQuery वाक्यविन्यास के साथ सहज नहीं हूं .. मुझे वास्तव में इसे पढ़ना चाहिए। आपके उदाहरण की तरह; यदि बटन के वर्ग हैं: CssClass = "बटन क्षैतिज फ़्लोटिंग" मैं इसे कैसे लक्षित करूं? – Phil

8

jQuery का उपयोग करना:

$('#Button').click(function(){ 
    $(this).addClass("active"); 
}); 

इस तरह, आप onclick संचालकों के साथ अपने HTML मार्कअप अपवित्र की जरूरत नहीं है।

+0

इस दृष्टिकोण के साथ समस्या यह है कि तत्व आईडी isn ' टी 'बटन' होने की गारंटी नहीं है, यह आमतौर पर नहीं है। –

+0

ठीक है, आप केवल वही काम कर सकते हैं जो प्रश्न आपको देता है। मुझे यकीन है कि फिल jQuery चयनकर्ता दस्तावेज़ों को देखने के लिए पर्याप्त उज्ज्वल है और खुद को नौकरी के लिए एक अच्छा चयनकर्ता उपयुक्त लगता है। –

+0

मुझे इतना यकीन नहीं होगा;) – Phil

2
$(document).ready(function() { 
    $('#Button').click(function() { 
     $(this).addClass('active'); 
    }); 
}); 

चाल करना चाहिए। जब तक कि आप AJAX के साथ बटन लोड नहीं कर रहे हों। जो मामले में आप कर सकता है:

$('#Button').live('click', function() {... 

इसके अलावा अपने एचटीएमएल कोड में एक बार से अधिक एक ही आईडी का उपयोग नहीं याद है।

0

अपने सीएसएस को और अधिक विशिष्ट बनाने की कोशिश करें ताकि नई (हरी) शैली पिछले की तुलना में अधिक विशिष्ट हो, ताकि यह मेरे लिए काम करे!

उदाहरण के लिए, आप सीएसएस में उपयोग कर सकते हैं:

button:active {/*your style here*/} 
के बजाय (शायद काम नहीं कर रहा)

:

.active {/*style*/} (.active is not a pseudo-class) 

आशा है कि यह मदद करता है!

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