2012-10-23 11 views
5

मैं कक्षा required के साथ आइटमों के संग्रह पर पुन: प्रयास करने की कोशिश कर रहा हूं। मुझे लगता है कि मुझे $.each फ़ंक्शन गलत तरीके से उपयोग करना होगा।

function required(address) { 
    //object to hold elements not passing validation tests 
    var pass = true; 
    $('.required').each(function(index, elem){ 
     console.log(elem); 
     //check if it has the class indicating it is an email 
     if (elem.hasClass('re')) { 
      var validEmail = validateEmail(address.email); 
      if (!validEmail){ 
       $(this).addClass('nv'); 
      } 

     } 
     }); 
    } 

मुझे लगता है कि कंसोल में तत्व <input type=​"text" id=​"name_input" class=​"pr required">​

और है तो त्रुटि Uncaught TypeError: Object #<HTMLInputElement> has no method 'hasClass'

कैसे उस वस्तु hasClass विधि नहीं हो सकता?

+2

नहीं करना चाहिए यह जा सकता है? –

उत्तर

9

आपका पहला संकेत होना चाहिए कि वस्तु एक #<HTMLInputElement> और नहीं एक है jQuery वस्तु। का प्रयोग करें $(elem).hasClass('re');

+0

आह हाँ। यह अब एक स्पष्ट संकेत है कि मैं इसे देखता हूं। jquery jquery ऑब्जेक्ट वापस क्यों नहीं करेगा? बहुत धन्यवाद! – 1252748

+0

क्योंकि आप डीओएम तत्वों पर पुनरावृत्त कर रहे हैं, इसलिए यह एक डोम तत्व वापस कर देगा। आपको उस DOM तत्व से एक jQuery ऑब्जेक्ट बनाने की आवश्यकता होगी :) –

+0

सबकुछ अब समझ में आता है। बहुत धन्यवाद! – 1252748

2

elem अपने कोड में, एक डोम तत्व वस्तु है आप jQuery तरीकों का उपयोग करने के लिए आप एक jQuery वस्तु पहले बनाना चाहिए चाहते हैं:

if ($(elem).hasClass('re')) { 
1

आप अपने jQuery चयनकर्ता की कक्षा .re हिस्सा बनाने और बचाने के यदि/तो: $ (ELEM) .hasClass ('..')

function required(address) 
{ 
    //object to hold elements not passing validation tests 
    var pass = true; 
    $('.required.re').each(function(index, elem) { 
     console.log(elem); 
     var validEmail = validateEmail(address.email); 
     if (!validEmail){ 
      $(this).addClass('nv'); 
     } 
    }); 
} 
संबंधित मुद्दे