2011-06-16 12 views
27

क्यों काम नहीं कर रहा है ??jQuery: यदि इस एचआरईएफ में

$("a").each(function() { 
    if ($(this[href$="?"]).length()) { 
     alert("Contains questionmark"); 
    } 
}); 

Ps .: यह केवल सरलतापूर्ण उदाहरण है, ताकि आपके लिए एक सिंहावलोकन प्राप्त करना आसान हो सके।

+0

$ (। "एक") प्रत्येक (function() { कंसोल: के बाद से आप कहते हैं कि अपने उदाहरण सरलीकृत है), यह कम कोड और बहुत तेजी से बस केवल लिंक आप के साथ शुरू करना चाहते हैं के लिए होगा .debug ($ (यह [href $ = "?"]); यदि ($ (यह [href $ = "?"]) लंबाई()) { अलर्ट ("प्रश्नचिह्न शामिल है"); } }); – MLS

उत्तर

62

आप बस ब्याज के तत्वों का चयन कर सकते हैं।

$('a[href*="?"]').each(function() { 
    alert('Contains question mark'); 
}); 

http://jsfiddle.net/mattball/TzUN3/

ध्यान दें कि आप attribute-ends-with selector उपयोग कर रहे थे, इसके बाद के संस्करण कोड attribute-contains selector का उपयोग करता है, जो यह क्या लगता है कि आप वास्तव में के लिए लक्ष्य कर रहे हैं है।

+0

ओह ... धन्यवाद ... :-) –

+0

@ मैट - ध्यान दें कि मिलान करने के लिए स्ट्रिंग के चारों ओर उद्धरण jQuery के वर्तमान संस्करण में आवश्यक हैं। – Ender

+1

@ एपीआई दस्तावेज़ों के अनुसार, आप सही हैं। अभ्यास में उद्धरण हमेशा जरूरी नहीं होते हैं, जैसा कि आपने कहा था, वे यहां जरूरी हैं। –

0

इस प्रयास करें:

$("a").each(function() { 
    if ($('[href$="?"]', this).length()) { 
     alert("Contains questionmark"); 
    } 
}); 
+0

यह काम नहीं करेगा, क्योंकि यह ".each()" संदर्भ में ' 'के * वंश के * ' टैग को देखने के लिए jQuery को बता रहा है। – Pointy

+0

सुधारित। अच्छी पकड़। –

3

यह है क्योंकि यह वाक्य रचना अतर्कसंगत है काम नहीं करता। आप बस जावास्क्रिप्ट में ऐसा नहीं कर सकते हैं।

हालांकि, आप jQuery का उपयोग कर सकते हैं:

if ($(this).is('[href$=?]')) 

आप, साथ ही "href" मूल्य पर गौर कर सकते हैं:

if (/\?$/.test(this.href)) 
+0

उपर्युक्त में से कोई भी मुझे एक चेतावनी नहीं देता है, हालांकि इसमें एक प्रश्नचिह्न के साथ एक लिंक है ... –

+0

[यह मेरे लिए ठीक काम करता है।] (Http://jsfiddle.net/WtXq8/) – Pointy

0

उपयोग इस

$("a").each(function() { 
    var href=$(this).prop('href'); 
    if (href.indexOf('?') > -1) { 
     alert("Contains questionmark"); 
    } 
}); 
15
$("a").each(function() { 
    if (this.href.indexOf('?') != -1) { 
     alert("Contains questionmark"); 
    } 
}); 
+0

सादगी के लिए +1 – jvenema

+1

यह jQuery के लिए आवश्यक रिसॉर्ट के बजाय बस 'this.href' के साथ भी आसान होगा। यह वास्तव में भी सही नहीं है, क्योंकि मूल प्रश्न "?" ढूंढना चाहता था "href" मान के * end * पर (जो करने के लिए एक समझदार बात होगी)। – Pointy

+1

@ पॉइंटी मुझे नहीं लगता कि ओपी को एहसास हुआ कि वह चयनकर्ता के साथ विशेषता-सिरों का उपयोग कर रहा है। –

2

दूसरों द्वारा किए गए अंकों के साथ, $= चयनकर्ता "ends with" चयनकर्ता है। तुम इतनी तरह, *= (contains) चयनकर्ता चाहते हैं:

$('a').each(function() { 
    if ($(this).is('[href*="?"')) { 
     alert("Contains questionmark"); 
    } 
}); 

Here's a live demo ->

, मैट बॉल द्वारा बताया गया है जब तक कि आप भी (एक प्रश्न चिह्न के बिना लिंक जो भी मामला हो हेरफेर करने के लिए की आवश्यकता होगी,

$('a[href*="?"]').each(function() { 
    alert("Contains questionmark"); 
}); 
संबंधित मुद्दे