jQuery একটি লিঙ্ক অক্ষম


284

যেকোনটি কীভাবে ব্যবহার না করে জ্যাকুরিতে কোনও লিঙ্ক অক্ষম করবেন return false;?

বিশেষত, আমি যা করার চেষ্টা করছি তা কোনও আইটেমের লিঙ্কটি নিষ্ক্রিয় করা, জ্যাকুরির সাহায্যে এটিতে ক্লিক করা যা কিছু স্টাফকে ট্রিগার করে, তারপরে সেই লিঙ্কটি পুনরায় সক্রিয় করা যাতে এটি আবার ক্লিক করা হয় তবে এটি ডিফল্ট হিসাবে কাজ করে।

ধন্যবাদ। ডেভ

আপডেট এখানে কোড। .expandedক্লাসটি প্রয়োগ করার পরে এটি করার দরকার কী তা হ'ল অক্ষম লিঙ্কটি পুনরায় সক্ষম করা।

$('ul li').click(function(e) {
    e.preventDefault();
    $('ul').addClass('expanded');
    $('ul.expanded').fadeIn(300);
    //return false;
});

7
রিটার্ন মিথ্যা না ব্যবহারের প্রয়োজনীয়তা কেন? এটি ব্যবহার করুন এবং তারপরে ইভেন্ট হ্যান্ডলারটি আর প্রয়োগ না হয়ে মুছুন (বা উল্লিখিত "কিছু স্টাফ" এর স্থিতির উপর নির্ভর করে বিভিন্ন মান ফিরিয়ে দিতে এটিতে শর্তযুক্ত রাখুন)।
কোয়ান্টিন

লিঙ্কটি একই ক্লিকের ক্রিয়া অনুসরণ করার আগে আপনি কি কিছু প্রাক-প্রক্রিয়াজাতকরণের চেষ্টা করছেন? অর্থাত আপনি দুটি ক্লিকের প্রস্তাব দিচ্ছেন না বরং ব্যবহারকারী ক্লিক লিঙ্ক, কিছু ক্রিয়া ঘটে, লিঙ্কটি অনুসরণ করা হয়?
লাজার

অন্যথায়, আপনি ব্যাখ্যা করতে পারবেন যে সমস্যার স্থান সম্পর্কে আরও ভাল বোঝার জন্য আপনি কেন এই পদ্ধতিটি গ্রহণ করছেন উত্তরগুলির উন্নতি করবে।
লাজার

@ লাজারাস, আমি একই লিঙ্কটিতে 2 টি ক্লিক প্রস্তাব করছি। প্রথমে কিছু স্টাফ করতে 1, তারপরে লিঙ্কটিকে লিঙ্ক হিসাবে বিবেচনা করার জন্য 2 য়।
ডেভোবোকার

@ ডেভিডোরওয়ার্ড, এখনও অবধি আমি মিথ্যা প্রত্যাবর্তনের চেষ্টা করেছি এবং এটি আমার লক্ষ্যের দ্বিতীয় অংশে বহন করে, অর্থাৎ ২ য় ক্লিকটি অতিক্রম করতে দেয় না। আপনি যদি একটি সংক্ষিপ্ত উদাহরণ লিখতে পারেন তবে আমি সবচেয়ে কৃতজ্ঞ হব।
ডেভোবোকার

উত্তর:


364
$('#myLink').click(function(e) {
    e.preventDefault();
    //do other stuff when a click happens
});

এটি হাইপারলিংকের ডিফল্ট আচরণকে আটকাবে, যা নির্দিষ্ট href দেখার জন্য।

JQuery টিউটোরিয়াল থেকে :

ক্লিক এবং বেশিরভাগ ইভেন্টের জন্য, আপনি ডিফল্ট আচরণটি রোধ করতে পারেন - jquery.com এর লিঙ্কটি অনুসরণ করে - ইভেন্ট হ্যান্ডলারে ইভেন্ট.প্রিভেন্টডেফল্ট () কল করে

আপনি যদি preventDefault()কেবলমাত্র একটি নির্দিষ্ট শর্ত পূরণ হয় তবে (উদাহরণস্বরূপ কোনও কিছু লুকানো রয়েছে), আপনি শ্রেণীর প্রসারিত হয়ে আপনার উলের দৃশ্যমানতা পরীক্ষা করতে পারেন । যদি এটি দৃশ্যমান হয় (অর্থাত্ লুকানো না থাকে) লিঙ্কটি স্বাভাবিক হিসাবে চালানো উচিত, যেমন বিবৃতিটি প্রবেশ করা হবে না, এবং সুতরাং ডিফল্ট আচরণকে প্রতিরোধ করা হবে না:

$('ul li').click(function(e) {
    if($('ul.expanded').is(':hidden')) {
        e.preventDefault();
        $('ul').addClass('expanded');
        $('ul.expanded').fadeIn(300);
    } 
});

3
JQuery 1.7+ এর সাথে আপনি চালু / বন্ধটি ব্যবহার করতে পারেন: stackoverflow.com/questions/209029/…
ল্যান্স ক্লিভল্যান্ড

যদি এটিতে একটি href এবং অন্লিক থাকে তবে এটি $ ("# myLink") কাজ করবে att
রোনাল্ড ম্যাকডোনাল্ড

আজাক্স এবং জ্যাকোরির মাধ্যমে উপলব্ধি হয়েছি যে এই লিঙ্কগুলি পাওয়া থেকে স্ক্র্যাপারদের রাখতে কলব্যাক থাকা কোনও href ক্রয়টি আমি আড়াল করতে পারি। অান্তরিক ধন্যবাদ!
সিজার বিলিচ

এই পোস্টে বুটস্ট্র্যাপ ব্যবহারের সহজ উপায় রয়েছে , আশা সাহায্য করে।
শাইজুত

107

এটা চেষ্টা কর:

$("a").removeAttr('href');

EDIT-

আপনার আপডেট হওয়া কোড থেকে:

 var location= $('#link1').attr("href");
 $("#link1").removeAttr('href');
 $('ul').addClass('expanded');
 $('ul.expanded').fadeIn(300);
 $("#link1").attr("href", location);

3
হেরেফের সাথে খেলা খুব সুন্দর কারণ কোনও লিঙ্কটি নিষ্ক্রিয় করার একটি দ্রুত উপায় যা কোনও অনক্লিক ইভেন্টের মাধ্যমে ক্রিয়া করে। খুব চতুর!
দাইতঙ্গিও

ব্রাউজারটিকে href="#"
ইউআরআইতে

65

আমার মতো গুগলের মাধ্যমে এখানে আসা অন্যদের জন্য - এখানে আরও একটি পদ্ধতি রয়েছে:

css:
.disabled {
  color: grey; // ...whatever
}

jQuery:
$('#myLink').click(function (e) {
  e.preventDefault();
  if ($(this).hasClass('disabled'))
    return false; // Do something else in here if required
  else
    window.location.href = $(this).attr('href');
});

// Elsewhere in your code
if (disabledCondition == true)
  $('#myLink').addClass('disabled')
else
  $('#myLink').removeClass('disabled')

মনে রাখবেন: এটি কেবল একটি CSS ক্লাস নয়

বর্গ = "buttonstyle"

কিন্তু এই দুটি

শ্রেণী = "বোতামের স্টাইল অক্ষম"

যাতে আপনি jQuery এর সাহায্যে আরও ক্লাস সহজেই যুক্ত করতে এবং সরাতে পারেন। Href টাচ করার দরকার নেই ...

আমি jQuery ভালবাসি! ;-)


2
এটি ধরে নিয়েছে যে লিঙ্কটির কোনও লক্ষ্য নেই :)
dstarh

2
এই সমস্ত অভিনবত্বের পরিবর্তে, কেন কেবল ডোমটিতে উচ্চতর ক্লিক ক্লিক করা উচিত নয়, on()সমস্ত a.disabledলিঙ্কগুলি ফিল্টার করতে এবং ডিফল্ট প্রতিরোধ করতে ব্যবহার করুন । তারপরে আপনাকে যা করতে হবে তা হ'ল অক্ষম শ্রেণিকে চালু / বন্ধ টগল করা এবং লিঙ্কটি যখন "সক্ষম" হবে তখন নিজেই পরিচালনা করবে।
কোডচিম্প

"== সত্য" - অ্যাডক্লাসের প্রয়োজন নেই ('অক্ষম') নির্বিশেষে চলবে। if(disabledCondition)
ফক্স উইলসন

1
@ ফুইলসন, আপনি যখন পুরোপুরি সঠিক, একজন প্রারম্ভিক প্রোগ্রামার হিসাবে, এটির সাথে বোঝা আরও সহজ == true। :)
কার্মিজম

কোন বিশেষ কারণ এটিকে সহজ নয় if ($(this).hasClass('disabled')) { e.preventDefault(); }?
মীর

58

এখানে একটি বিকল্প সিএসএস / jQuery সমাধান যা আমি এর স্বল্পতা এবং ন্যূনতম স্ক্রিপ্টিংয়ের জন্য পছন্দ করি:

CSS:

a.disabled {
  opacity: 0.5;
  pointer-events: none;
  cursor: default;
}

JQuery:

$('.disableAfterClick').click(function (e) {
   $(this).addClass('disabled');
});

7
মজিলা থেকে : "সতর্কতা: নন-এসভিজি উপাদানগুলির জন্য সিএসএসে পয়েন্টার-ইভেন্টগুলির ব্যবহার পরীক্ষামূলক।
ডিউলিন

1
এটি একটি ভাল বিবেচনার বিষয় তবে আধুনিক ব্রাউজারগুলির বেশিরভাগ ক্ষেত্রে এটি ভালভাবে কাজ করে।
পিটার ডিউইস

আপনি chaining বিবেচনা করতে পারে .prop("tabindex", "-1");পরেaddClass
ওলেগ Grishko

19

আপনি অনুসরণ করে লিঙ্কের জন্য ক্লিক অপসারণ করতে পারেন;

$('#link-id').unbind('click');

আপনি অনুসরণ করে লিঙ্কটি পুনরায় সক্ষম করতে পারেন,

$('#link-id').bind('click');

আপনি লিঙ্কগুলির জন্য 'অক্ষম' সম্পত্তি ব্যবহার করতে পারবেন না।


1
অন্যের তুলনায় টগল করা সহজ এবং বন্ধ।
পাইথন 1981

2
"আপনি লিঙ্কগুলির জন্য 'অক্ষম' সম্পত্তি ব্যবহার করতে পারবেন না।" ভাবুন কেন একটি বোতাম এবং অক্ষম করার জন্য একটি লিঙ্কের মধ্যে কোনও সামঞ্জস্যতা নেই। "অক্ষম" একটি লিঙ্কের জন্যও কাজ করা উচিত। এটি চেভি কারের পক্ষে বলার মতো, আপনার থামার জন্য অবশ্যই ব্রেকের প্যাডেলটি আঘাত করতে হবে, তবে এই অন্য গাড়ী প্রস্তুতকারকের জন্য আপনাকে অবশ্যই ছাদে অবস্থিত এই লিভারটি ব্যবহার করতে হবে।
agগল 22

14

আপনি যদি href রুটে যান তবে আপনি এটি সংরক্ষণ করতে পারেন

অক্ষম করতে:

$('a').each(function(){
    $(this).data("href", $(this).attr("href")).removeAttr("href");
});

তারপরে আবার সক্ষম করুন:

$('a').each(function(){
    $(this).attr("href", $(this).data("href"));
});

একটি ক্ষেত্রে আমাকে এটি করতে হয়েছিল কারণ ক্লিক ইভেন্টগুলি ইতিমধ্যে অন্য কোথাও আবদ্ধ ছিল এবং এটিতে আমার কোনও নিয়ন্ত্রণ ছিল না।


12

লিঙ্কগুলি অক্ষম করার জন্য আমি সবসময় এটি jQuery এ ব্যবহার করি

$("form a").attr("disabled", "disabled");

আপনি $("form a").attr("disabled", false);এটি আবার সক্ষম করার জন্যও ব্যবহার করতে পারেন
আলেকজান্ডার রিহ্লিটস্কি

9

এইচটিএমএল লিঙ্ক উদাহরণ:

        <!-- boostrap button + fontawesome icon -->
        <a class="btn btn-primary" id="BT_Download" target="blank" href="DownloadDoc?Id=32">
        <i class="icon-file-text icon-large"></i>
        Download Document
        </a>

এটি jQuery ব্যবহার করুন

    $('#BT_Download').attr('disabled',true);

এটি সিএসএসে যুক্ত করুন:

    a[disabled="disabled"] {
        pointer-events: none;
    }

1
আমি এই সিএসএস সম্পত্তিটি আগে কখনও আসতে পারিনি তবে এটি আমার জন্য একটি হাইপারলিঙ্ক অক্ষম করার সহজতম পদ্ধতি। এর সৌন্দর্যটি হ'ল আপনি যখন pointer-events: noneঅ্যাঙ্কর উপাদানগুলি থেকে সম্পত্তি যুক্ত ক্লাসটি সরিয়ে ফেলেন তারা ক্লিক করার সময় তারা যা কিছু করেছিল তা ফিরিয়ে দেয়। সুতরাং যদি তারা বেসিক হাইপারলিংকগুলি থাকে তবে তারা তাদের hrefবৈশিষ্ট্যে ইউআরএল নেভিগেট করতে ফিরে আসে এবং তাদের যদি একটি ইভেন্ট ইভেন্ট হ্যান্ডলার সেট থাকে তবে তা আবার সক্রিয় হয়ে ওঠে। hrefমানগুলি বাঁচানোর চেয়ে অনেক সহজ এবং হ্যান্ডলারগুলি ক্লিক করুন।
ফিলিপ স্ট্রেটফোর্ড

আমি এই সমাধানটি পছন্দ করি, এটি সবচেয়ে সহজ।
লুই

মুষ্টিমেয় "সমাধানগুলি" যখন কিছুই কাজ করে না (এবং প্রায় এই পথ ছেড়ে দেয়), তখন এই রত্নটিতে আসে । এটি একটি অনর্থক সমাধান। এবং কেবলমাত্র যা সত্যই কাজ করে। যশ।
ব্যবহারকারী 12379095

5

"একটি আইটেম সম্পাদনা করতে এবং চেকআউটে থাকাকালীন -Wall বন্য পশ্চিমের ক্লিকগুলি যে কোনও জায়গায় প্রতিরোধ করতে আমার চেকআউট"

$('a').click(function(e) {
    var = $(this).attr('disabled');
    if (var === 'disabled') {
        e.preventDefault();
    }
});

সুতরাং আমি যদি চাই যে উপরে বর্ণিত "সম্পাদনা-মোডে" থাকাকালীন দ্বিতীয় ক্রিয়া সরঞ্জামদণ্ডের সমস্ত বাহ্যিক লিঙ্কগুলি অক্ষম করা উচিত, আমি সম্পাদনা ফাংশনটিতে যুক্ত করব

$('#actionToolbar .external').attr('disabled', true);

আগুনের পরে লিঙ্ক উদাহরণ:

<a href="http://goo.gl" target="elsewhere" class="external" disabled="disabled">Google</a>

এবং এখন আপনি লিঙ্কগুলির জন্য অক্ষম সম্পত্তি ব্যবহার করতে পারেন

চিয়ার্স!


3

আপনি এখানে উত্তর খুঁজে পাওয়া উচিত

এই দুর্দান্ত সমাধানের জন্য @ উইল এবং @ ম্যাটকে ধন্যবাদ

jQuery('#path .to .your a').each(function(){
    var $t = jQuery(this);
    $t.after($t.text());
    $t.remove();
});

3

আপনি যেমনটি চান ঠিক তেমন লুকিয়ে রাখতে এবং প্রদর্শন করতে পারেন

$(link).hide();
$(link).show();

2

কেবল স্টাফ ট্রিগার করুন, কিছু পতাকা সেট করুন, মিথ্যা ফিরে আসুন। পতাকা সেট করা থাকলে - কিছুই করবেন না।


চেষ্টা করেছেন যে কোনও ক্লাস সেট করে, পরে সেই ক্লাসটি কল করে তবে মিথ্যা বহন করে এবং লিঙ্কটি কল করা থেকে বাধা দেয়।
ডেভোবোকার

1

unbind()এতে অবচয় করা হয়েছিল jQuery 3, off()পরিবর্তে পদ্ধতিটি ব্যবহার করুন:

$("a").off("click");

0

আমি জানি এটি jQuery এর সাথে নয় তবে আপনি কিছু সাধারণ সিএসএসের সাথে একটি লিঙ্কটি অক্ষম করতে পারেন:

a[disabled] {
  z-index: -1;
}

এইচটিএমএল দেখতে হবে

<a disabled="disabled" href="/start">Take Survey</a>

0

এটি সেই লিঙ্কগুলির জন্য কাজ করে যা অনক্লিক বৈশিষ্ট্যটি ইনলাইন সেট করেছে have এটি আপনাকে পরে সক্ষম করার জন্য "মিথ্যা ফেরত" মুছে ফেলার অনুমতি দেয়।

        //disable all links matching class
        $('.yourLinkClass').each(function(index) {
            var link = $(this);
            var OnClickValue = link.attr("onclick");
            link.attr("onclick", "return false; " + OnClickValue);
        });

        //enable all edit links
        $('.yourLinkClass').each(function (index) {
            var link = $(this);
            var OnClickValue = link.attr("onclick");
            link.attr("onclick", OnClickValue.replace("return false; ", ""));
        });

-2

শুধু ব্যবহার $("a").prop("disabled", true);। এটি সত্যিই ডি লিঙ্ক উপাদানটি অক্ষম করবে। দরকার হয় prop("disabled", true)। ব্যবহার করবেন নাattr("disabled", true)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.