2012-09-20 20 views
10

का उपयोग कर इस एक काम करने के लिए प्राप्त करने के लिए प्रतीत नहीं कर सकते हैं HTML से जिम्मेदार बताते हैं ...निकाला जा रहा है डेटा jQuery

मैं एक पेज है कि कुछ लिंक छुपाता है। जब डोम लोड हो जाता है, तो मैं उन तत्वों में से कुछ को टॉगल करने के लिए jQuery का उपयोग कर रहा हूं। यह बहुत की तरह एक डेटा विशेषता का उपयोग कर से प्रेरित है:

$.each($(".d_btn"), function() { 
    var btn = $(this).data('usr'); 
    if (btn == '48'){  
    $(this).children('.hidden_button').toggle(); 
    } 

The Must सब काम करता है इसके बाद के संस्करण के रूप में की योजना बनाई:

<div class="d_btn" data-usr='48'> 
    <div class="hidden_button"> 

फिर, मैं कोड है। समस्या यह है कि अगर मैं कथन का मूल्यांकन कर लेता हूं तो मैं कक्षा .d_btn से डेटा-usr को हटाने का प्रयास कर रहा हूं। मैं निम्नलिखित की कोशिश की है और कुछ भी नहीं काम करता है (यानी, के बाद पृष्ठ लोड होने पर स्रोत अभी भी डेटा-usr विशेषता दिखाता है:

$(this).removeAttr("data-usr"); 

$(this).removeData("usr"); 

मैं अब कुछ घंटों के लिए इस पर काम कर रहा है और। ..nothing! मदद बहुत सराहना कर रहा है!

अद्यतन

मैं एक रिक्त स्ट्रिंग पर डेटा विशेषता सेटिंग के महान सुझावों को आज़मा चुके लेकिन मैं अभी भी वांछित परिणाम नहीं मिल रहा है।

करने के लिए थोड़ा आगे बताएं, कारण मैं विशेषता को हटाने का प्रयास कर रहा हूं, इसलिए जब AJAX प्रतिक्रिया पृष्ठ पर एक और आइटम जोड़ती है, तो पहले जोड़े गए आइटमों में पहले से ही दिखाया गया या छुपा हुआ बटन होगा। AJAX प्रतिक्रिया पर, डोम लोड होने के बाद, मैं एक ही फ़ंक्शन को कॉल कर रहा हूं।

वर्तमान में, जब कुछ AJAX के माध्यम से जोड़ा जाता है, यह सभी बटन को टॉगल करता है (जो कि छिपा हुआ है और इसके विपरीत थे दिखा।) ओह ...

मैं भी पूरी तरह से मेरे दृष्टिकोण के लिए विकल्प की कोशिश करने को तैयार हूँ । धन्यवाद!

अद्यतन

खैर, प्रकाश बल्ब सिर्फ फ्लैश और मैं (बस .show का उपयोग करके मुझे क्या करना चाहते हो करने में सक्षम हूँ) .toggle() के बजाय

वैसे भी, मैं अभी भी इस प्रश्न का उत्तर ढूंढना चाहता हूं क्योंकि जब भी कुछ जोड़ा जाता है तो पृष्ठ संभावित रूप से सैकड़ों आइटमों की जांच करेगा - यह बहुत अक्षम है (यहां तक ​​कि कंप्यूटर के लिए भी, हाहाहा।)

उत्तर

7

डीओएम बदलना स्रोत को प्रभावित नहीं करता है। यह डीओएम को प्रभावित करता है, जिसे आप इंस्पेक्टर/डेवलपर टूल्स के साथ देख सकते हैं। राइट क्लिक => व्यू सोर्स आपको पृष्ठ का मूल स्रोत देगा, न कि वास्तविक वर्तमान स्रोत जावास्क्रिप्ट द्वारा संशोधित।

+1

+1 बिंदु यह है। http://jsfiddle.net/VVbFG/ – undefined

+0

धन्यवाद - यह वास्तव में सहायक है! मैंने अपनी पोस्ट को अतिरिक्त जानकारी के साथ अपडेट किया है। –

5

आप सेट क्यों नहीं करते एक यादृच्छिक मूल्य या खाली चर के लिए मूल्य इसके बजाय सक्षम अगर एटीआर काम नहीं करता ..

$(this).attr("data-usr" , ''); 

$(this).prop("data-usr" , ''); 
+0

धन्यवाद - मैंने कुछ और स्पष्टीकरण के साथ अपनी मूल पोस्ट अपडेट की है ... –

+0

लेकिन जब डेटा-यूएसआर खाली है, तो मुझे लगता है कि यह लूप सही नहीं होगा .. तो उस विशेष div के लिए बटन स्थिति टॉगल नहीं किया जाएगा .. क्या आप एक पहेली बना सकते हैं यदि मैं सोच रहा हूं तो गलत है ?? –

+0

यह वही है जो मैंने सोचा था लेकिन यह इस तरह काम नहीं कर रहा है। अपरिभाषित ने ऊपर की प्रतिक्रिया में एक पहेली बनाई: jsfiddle.net/VVbFG –

1

एक रिक्त स्ट्रिंग पर सेट यह:

$(this).attr("data-usr", ""); 

मैं दूसरा क्या Kolink ने कहा: डोम, नहीं स्रोत की जाँच करें। (क्रोम: Ctrl + Shift + i)।

+0

धन्यवाद - मैंने कुछ और स्पष्टीकरण के साथ अपनी मूल पोस्ट अपडेट की है ... –

1

जैसा कि अन्य ने कहा है। स्रोत की जांच केवल वेबपृष्ठ के लिए मूल unedited स्रोत दिखाएगी। आपको क्या करना है डेवलपर टूल का उपयोग करके डीओएम की जांच करें।

मैंने क्रोम के इंस्पेक्टर में jsfiddle here पर सबकुछ जांच लिया है और विशेषता निश्चित रूप से डेटा को हटा दी जा रही है।

+0

धन्यवाद - तो शायद मेरे तर्क के साथ कोई समस्या है? दुर्भाग्यवश मुझे नहीं पता कि डोम की जांच कैसे करें (फायरबग पर कोशिश की गई और सिर या पूंछ को किसी भी चीज़ से बाहर नहीं कर सका) ... –

+1

फ़ायरफ़ॉक्स में आपको पृष्ठ में तत्व पर राइट क्लिक करने में सक्षम होना चाहिए और "निरीक्षण" का चयन करना चाहिए फायरबग के साथ तत्व "। फिर आप चयनित तत्व पर स्थानीयकृत पृष्ठ के लिए मार्कअप देखेंगे। –

+0

नाइस -^धन्यवाद दोस्त^मैंने अभी चेक किया है और आप सही हैं - डेटा विशेषता हटा दी गई है। जो मेरे निष्कर्ष की पुष्टि करता है कि यह मेरे तर्क के साथ एक समस्या थी। प्रश्न अब क्यों है, जब AJAX के माध्यम से एक नया आइटम जोड़ा जाता है और मैं एक ही फ़ंक्शन को कॉल करता हूं, तो क्या सभी चीजों पर लूप चलाया जाता है और सब कुछ टॉगल किया जाता है? –

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