JQuery का उपयोग करके एंकर को सक्षम या अक्षम कैसे करें?
JQuery का उपयोग करके एंकर को सक्षम या अक्षम कैसे करें?
जवाबों:
एक एंकर को निर्दिष्ट का पालन करने से रोकने के लिए href
, मैं उपयोग करने का सुझाव दूंगा preventDefault()
:
// jQuery 1.7+
$(function () {
$('a.something').on("click", function (e) {
e.preventDefault();
});
});
// jQuery < 1.7
$(function () {
$('a.something').click(function (e) {
e.preventDefault();
});
// or
$('a.something').bind("click", function (e) {
e.preventDefault();
});
});
देख:
http://docs.jquery.com/Events/jQuery.Event#event.preventDefault.28.29
इसके अलावा SO पर यह पिछला प्रश्न देखें:
$('a.something').on("click", function (e) { e.preventDefault(); });
?
वर्तमान में मैं जिस ऐप पर काम कर रहा हूं वह जावास्क्रिप्ट के साथ संयोजन में सीएसएस शैली के साथ करता है।
a.disabled { color:gray; }
फिर जब भी मैं एक लिंक को अक्षम करना चाहता हूं मैं कॉल करता हूं
$('thelink').addClass('disabled');
फिर, 'thelink' एक टैग के लिए क्लिक हैंडलर में मैं हमेशा एक चेक पहली चीज़ चलाता हूं
if ($('thelink').hasClass('disabled')) return;
मुझे एक जवाब मिला कि मुझे यहां बहुत अच्छा लगता है
इस तरह दिखता है:
$(document).ready(function(){
$("a").click(function () {
$(this).fadeTo("fast", .5).removeAttr("href");
});
});
सक्षम करने में href विशेषता सेट करना शामिल होगा
$(document).ready(function(){
$("a").click(function () {
$(this).fadeIn("fast").attr("href", "http://whatever.com/wherever.html");
});
});
इससे आपको पता चलता है कि लंगर तत्व सामान्य पाठ बन जाता है, और इसके विपरीत।
मुझे लगता है कि एक अच्छा समाधान निष्क्रिय डेटा विशेषता को सेट करना है और क्लिक पर इसके लिए चेक एंकर करना है। इस तरह हम अस्थायी रूप से एक लंगर को निष्क्रिय कर सकते हैं जब तक कि जावास्क्रिप्ट को अजाक्स कॉल या कुछ गणनाओं के साथ समाप्त नहीं किया जाता है। यदि हम इसे अक्षम नहीं करते हैं, तो हम इसे कुछ बार क्लिक कर सकते हैं, जो अवांछनीय है ...
$('a').live('click', function () {
var anchor = $(this);
if (anchor.data("disabled")) {
return false;
}
anchor.data("disabled", "disabled");
$.ajax({
url: url,
data: data,
cache: false,
success: function (json) {
// when it's done, we enable the anchor again
anchor.removeData("disabled");
},
error: function () {
// there was an error, enable the anchor
anchor.removeData("disabled");
}
});
return false;
});
मैंने एक jsfiddle उदाहरण दिया: http://jsfiddle.net/wgZ59/76/
चयनित उत्तर अच्छा नहीं है।
पॉइंटर-ईवेंट सीएसएस शैली का उपयोग करें । (जैसा कि रशद अन्नारा ने सुझाव दिया)
MDN https://developer.mozilla.org/en-US/docs/Web/CSS/pointer-events देखें । अधिकांश ब्राउज़रों में इसका समर्थन किया गया।
एंकर के लिए सरल "अक्षम" विशेषता जोड़ने का काम करेगा यदि आपके पास वैश्विक सीएसएस नियम निम्नलिखित हैं:
a[disabled], a[disabled]:hover {
pointer-events: none;
color: #e1e1e1;
}
नीचे की पंक्तियों को आज़माएँ
$("#yourbuttonid").attr("disabled", "disabled");
$("#yourbuttonid").removeAttr("href");
Coz, भले ही आप <a>
टैग href
को अक्षम कर दें, फिर href
भी आपको हटाना होगा ।
जब आप सक्षम करना चाहते हैं लाइनों के नीचे का प्रयास करें
$("#yourbuttonid").removeAttr("disabled");
$("#yourbuttonid").attr("href", "#nav-panel");
यह उतना ही सरल है जितना कि असत्य;
पूर्व।
jQuery("li a:eq(0)").click(function(){
return false;
})
या
jQuery("#menu a").click(function(){
return false;
})
$('#divID').addClass('disabledAnchor');
सीएसएस फ़ाइल में
.disabledAnchor a{
pointer-events: none !important;
cursor: default;
color:white;
}
$("a").click(function(event) {
event.preventDefault();
});
यदि इस विधि को कॉल किया जाता है, तो ईवेंट की डिफ़ॉल्ट क्रिया ट्रिगर नहीं होगी।
यदि आप उस पृष्ठ के साथ सभी इंटरैक्शन को ब्लॉक करने का प्रयास कर रहे हैं जिसे आप jQuery के ब्लॉकयूआई प्लगइन पर देखना चाहते हैं
आपने कभी भी यह निर्दिष्ट नहीं किया कि आप उन्हें कैसे अक्षम करना चाहते हैं, या अक्षम करने का क्या कारण होगा।
सबसे पहले, आप यह पता लगाना चाहते हैं कि विकलांग को मान कैसे सेट करना है, इसके लिए आप JQuery के गुण कार्य का उपयोग करेंगे , और उस फ़ंक्शन पर एक क्लिक , या दस्तावेज़ को लोड करने जैसी घटना हो सकती है ।
उन स्थितियों के लिए जहां आपको एक एंकर टैग के भीतर पाठ या HTML सामग्री डालनी होगी, लेकिन आप बस उस तत्व को क्लिक करने पर कोई कार्रवाई नहीं करना चाहते (जैसे जब आप चाहते हैं कि एक निष्क्रिय लिंक लिंक अक्षम अवस्था में होना चाहिए क्योंकि यह है वर्तमान पृष्ठ), बस बाहर href कट। ;)
<a>3 (current page, I'm totally disabled!)</a>
@ माइकल-मीडोज द्वारा दिए गए उत्तर ने मुझे इस बात से इत्तला कर दी, लेकिन अभी भी उन परिदृश्यों को संबोधित कर रहा है जहाँ आपको अभी भी jQuery / JS के साथ काम करना है। इस स्थिति में, यदि आपके पास html लिखने पर नियंत्रण है, तो बस href टैग को x-ing करना होगा, इसके लिए आपको केवल एक शुद्ध HTML एक का समाधान करना होगा!
JQuery फ़ाइनग्लिंग के बिना अन्य समाधान जो href रहते हैं, आपको href में # डालने की आवश्यकता होती है, लेकिन इससे पृष्ठ शीर्ष पर उछलता है, और आप चाहते हैं कि यह सादा पुराना अक्षम हो। या इसे खाली छोड़ रहा है, लेकिन ब्राउज़र पर निर्भर करता है, जो अभी भी शीर्ष पर कूदने जैसा सामान करता है, और, यह आईडीई के अनुसार अमान्य HTML है। लेकिन जाहिरा तौर पर एक a
टैग एक एचआरईएफ के बिना पूरी तरह से वैध HTML है।
अंत में, आप कह सकते हैं: ठीक है, क्यों नहीं एक टैग पूरी तरह से डंप? क्योंकि अक्सर आप नहीं कर सकते हैं, a
टैग का उपयोग CSS फ्रेमवर्क में स्टाइल के उद्देश्यों के लिए किया जाता है या आपके द्वारा उपयोग किए जा रहे नियंत्रण की तरह, बूटस्ट्रैप के पेजर की तरह:
http://twitter.github.io/bootstrap/components.html#pagination
यदि आपको एक एंकर टैग के रूप में व्यवहार करने की आवश्यकता नहीं है, तो मैं इसे बिल्कुल बदलना पसंद करूंगा। उदाहरण के लिए यदि आपका एंकर टैग पसंद है
<a class="MyLink" href="http://www.google.com"><span>My</span> <strong>Link</strong></a>
फिर jquery का उपयोग करके आप ऐसा कर सकते हैं जब आपको लिंक के बजाय पाठ प्रदर्शित करने की आवश्यकता होती है।
var content = $(".MyLink").text(); // or .html()
$(".MyLink").replaceWith("<div>" + content + "</div>")
तो इस तरह, हम एंकर टैग को डिव टैग से बदल सकते हैं। यह बहुत आसान है (सिर्फ 2 लाइनें) और शब्दार्थ रूप से सही है (क्योंकि हमें अब लिंक की आवश्यकता नहीं है इसलिए लिंक नहीं होना चाहिए)
अक्षम संपत्ति के साथ किसी भी तत्व को अक्षम या सक्षम करें।
// Disable
$("#myAnchor").prop( "disabled", true );
// Enable
$( "#myAnchor" ).prop( "disabled", false );