একটি jQuery প্লাগইন একটি ইনলাইন স্টাইল প্রয়োগ করছে ( display:block)। আমি অলস বোধ করছি এবং এটিকে ওভাররাইড করতে চাই display:none।
সবচেয়ে ভাল (অলস) উপায় কী?
একটি jQuery প্লাগইন একটি ইনলাইন স্টাইল প্রয়োগ করছে ( display:block)। আমি অলস বোধ করছি এবং এটিকে ওভাররাইড করতে চাই display:none।
সবচেয়ে ভাল (অলস) উপায় কী?
উত্তর:
আপডেট: নিম্নলিখিত সমাধানগুলি কাজ করার সময়, একটি আরও সহজ পদ্ধতি রয়েছে। নিচে দেখ.
আমি এখানে যা এলাম তা এখানে এসেছি এবং আমি আশা করি এটি কার্যকর হবে - আপনার বা অন্য কারও কাছে:
$('#element').attr('style', function(i, style)
{
return style && style.replace(/display[^;]+;?/g, '');
});
এটি সেই ইনলাইন স্টাইলটি সরিয়ে ফেলবে।
আমি নিশ্চিত নই যে আপনি যা চেয়েছিলেন এটি তাই। আপনি এটিকে ওভাররাইড করতে চেয়েছিলেন, যা ইতিমধ্যে উল্লিখিত হিসাবে, সহজেই সম্পন্ন হয়েছে $('#element').css('display', 'inline')।
আমি যা খুঁজছিলাম তা হ'ল সমাধানটি সম্পূর্ণভাবে ইনলাইন স্টাইল সরানোর জন্য। আমার এটি এমন একটি প্লাগিনের জন্য দরকার যেখানে আমি লিখছি যেখানে আমাকে সাময়িকভাবে কিছু ইনলাইন সিএসএস মান সেট করতে হবে তবে পরে সেগুলি মুছে ফেলতে চাই; আমি চাই স্টাইলশিটটি আবার নিয়ন্ত্রণে নেওয়া উচিত। আমি এটির সমস্ত মূল মান সংরক্ষণ করে এবং সেগুলি আবার ইনলাইন রেখে আবারও করতে পারি, তবে এই সমাধানটি আমার কাছে অনেক বেশি পরিস্কার মনে করে।
এখানে এটি প্লাগইন ফর্ম্যাটে রয়েছে:
(function($)
{
$.fn.removeStyle = function(style)
{
var search = new RegExp(style + '[^;]+;?', 'g');
return this.each(function()
{
$(this).attr('style', function(i, style)
{
return style && style.replace(search, '');
});
});
};
}(jQuery));
আপনি যদি আপনার স্ক্রিপ্টের আগে এই প্লাগইনটি পৃষ্ঠাতে অন্তর্ভুক্ত করেন তবে আপনি কেবল কল করতে পারেন
$('#element').removeStyle('display');
এবং সেই কৌশলটি করা উচিত।
আপডেট : আমি এখন বুঝতে পেরেছি যে এই সমস্ত নিরর্থক। আপনি খালি এটি সেট করতে পারেন:
$('#element').css('display', '');
এবং এটি আপনার জন্য স্বয়ংক্রিয়ভাবে সরানো হবে।
দস্তাবেজের একটি উদ্ধৃতি এখানে :
একটি শৈলীর বৈশিষ্ট্যের মান একটি খালি স্ট্রিংয়ে সেট করা - যেমন
$('#mydiv').css('color', '')- যে সম্পত্তিটি ইতিমধ্যে সরাসরি প্রয়োগ করা হয়েছে, যদি এটি HTML শৈলীর বৈশিষ্ট্যে, jQuery এর.css()পদ্ধতিতে বা স্টাইলের সম্পত্তিটির সরাসরি DOM ম্যানিপুলেশনের মাধ্যমে সরিয়ে ফেলা হয়। এটি কোনও স্টাইলশিট বা<style>উপাদানটিতে সিএসএস বিধি প্রয়োগ করে এমন স্টাইল সরিয়ে দেয় না ।
আমি মনে করি না jQuery এখানে কোন যাদু করছে; মনে হচ্ছে styleঅবজেক্টটি এটিকে স্থানীয়ভাবে করে ।
.css('property')আপনাকে মান দেয় তবে এটি কোনও ইনলাইন শৈলী থেকে এসেছে কিনা তা আপনাকে জানায় না)।
styleবস্তুটি একইভাবে আচরণ করে বলে মনে হয়। আমি এই তথ্য দিয়ে আমার উত্তর সংশোধন।
$('#element').css('display', '')?
.removeAttr("style") পুরো স্টাইল ট্যাগ থেকে মুক্তি পেতে ...
.attr("style") মানটি পরীক্ষা করতে এবং একটি ইনলাইন শৈলী বিদ্যমান কিনা তা দেখতে ...
.attr("style",newValue) অন্য কিছু সেট করতে
display।
styleবৈশিষ্ট্যটিকে সরায় না , এটি এখনও নোটের যোগ্য।
ইনলাইন শৈলীগুলি সরিয়ে ফেলার সবচেয়ে সহজ উপায় (jQuery দ্বারা উত্পন্ন) হ'ল:
$(this).attr("style", "");
ইনলাইন কোডটি অদৃশ্য হয়ে যাবে এবং আপনার অবজেক্টটি আপনার সিএসএস ফাইলগুলিতে পূর্বনির্ধারিত শৈলীর সাথে মানিয়ে নেবে।
আমার জন্য কাজ!
আপনি jQuery এর cssপদ্ধতি ব্যবহার করে স্টাইলটি সেট করতে পারেন :
$('something:visible').css('display', 'none');
<div style="display:block;">, $('div').hide()।
hideইনলাইন শৈলীর সংশোধন করার একটি বিশেষ ক্ষেত্রে সম্বোধন করে। এই উত্তরটি সব ক্ষেত্রে সম্বোধন করে। ( hide/showদুটি মান একটি টোগলযুক্ত হিসাবে দুটি হিসাবে একটি সীমাবদ্ধতা আছে। যেমন- কিছুই-> ব্লক বা না-> ইনলাইন।)
hide/ showএর পুরানো মানটি মনে রাখবে displayএবং সঠিকভাবে এটি পুনরুদ্ধার করবে।
আপনি এই জাতীয় একটি jquery প্লাগইন তৈরি করতে পারেন:
jQuery.fn.removeInlineCss = (function(){
var rootStyle = document.documentElement.style;
var remover =
rootStyle.removeProperty // modern browser
|| rootStyle.removeAttribute // old browser (ie 6-8)
return function removeInlineCss(properties){
if(properties == null)
return this.removeAttr('style');
proporties = properties.split(/\s+/);
return this.each(function(){
for(var i = 0 ; i < proporties.length ; i++)
remover.call(this.style, proporties[i]);
});
};
})();
ব্যবহার
$(".foo").removeInlineCss(); //remove all inline styles
$(".foo").removeInlineCss("display"); //remove one inline style
$(".foo").removeInlineCss("color font-size font-weight"); //remove several inline styles
elem.style.removeProperty('margin-left')কেবলমাত্র বৈশিষ্ট্য margin-leftথেকে মুছে ফেলা হবে style(এবং সেই সম্পত্তির মানটি ফিরিয়ে দেবে)। আইই 6-8 এর জন্য এটি elem.style.removeAttribute()।
অলস উপায় (যা ভবিষ্যতের ডিজাইনাররা আপনার নামটিকে অভিশাপ দেবে এবং ঘুমের মধ্যে আপনাকে হত্যা করবে):
#myelement
{
display: none !important;
}
দাবি অস্বীকার: আমি এই পদ্ধতির পক্ষে নেই, তবে এটি অবশ্যই অলস উপায়।
$('div[style*=block]').removeAttr('style');
$("[style*=block]").hide();
আপনি যদি কোনও স্টাইলের বৈশিষ্ট্যের মধ্যে কোনও সম্পত্তি সরিয়ে নিতে চান - কেবল অন্য কোনও কিছুতে সেট করে না - আপনি এই removeProperty()পদ্ধতিটি ব্যবহার করেন :
document.getElementById('element').style.removeProperty('display');
আপডেট:
আমি বিভিন্ন পদ্ধতির সাথে এবং তার ফলাফলগুলির সাথে চারপাশে খেলতে একটি ইন্টারেক্টিভ ঝাঁকুনি তৈরি করেছি । কই, তেমন মধ্যে একটি পার্থক্য অনেক নয় set to empty string, set to faux valueএবং removeProperty()। এগুলির ফলাফল একই ফলব্যাক - যা হয় পূর্বনির্ধারিত সিএসএস বিধি বা ব্রাউজারের ডিফল্ট মান।
যদি আপনার স্টাইল থেকে প্রদর্শনটি কেবলমাত্র পরামিতি হয় তবে সমস্ত শৈলী অপসারণ করতে আপনি এই আদেশটি চালাতে পারেন:
$('#element').attr('style','');
এর অর্থ হ'ল যদি আপনার উপাদানটি এর আগে দেখায়:
<input id="element" style="display: block;">
এখন আপনার উপাদানটি এর মতো দেখাবে:
<input id="element" style="">
এখানে একটি ইনলাইন স্টাইল নির্বাচনকারী ফিল্টারটি আমি লিখেছি যে jQuery এ প্লাগ ইন।
$("div:inlineStyle(display:block)") // will select all divs with an inline style of display: block set
আপনার ক্ষেত্রে আপনি এটি ব্যবহার করতে পারেন:
$("div:inlineStyle(display:block)").hide();
আর স্টাইল প্রয়োগ না করে প্লাগইনটি পরিবর্তন করুন। এটি সেখানে-পরে শৈলী সরানোর চেয়ে অনেক ভাল better
$el.css({
height : '',
'margin-top' : ''
});
ইত্যাদি ...
খালি ২ য় পরম ফাঁকা রেখে দিন!
"jQuery plugin is applying an inline style (display:block). I'm feeling lazy and want to override it with display:none"। যদিও আপনার পাঠ্যটি সঠিক, আপনার কোড প্রশ্নটি সমাধান করে না।
প্রস্থের সম্পত্তি নিয়ে আমার একই সমস্যা ছিল। আমি কোড থেকে গুরুত্বপূর্ণটি মুছে ফেলতে পারিনি, এবং যেহেতু এটি একটি নতুন টেম্পলেটটিতে এই স্টাইলটির প্রয়োজন ছিল আমি উপাদানটিতে একটি আইডি (মডেলস্টাইলিং) যুক্ত করেছি এবং পরে আমি এই কোডটি টেমপ্লেটে যুক্ত করেছি:
<script type="text/javascript">
$('#modalstyling').css('width', ''); //Removal of width !important
$('#modalstyling').width('75%'); //Set custom width
</script>