প্রশ্ন:
JQuery ব্যবহার করে এইচটিএমএল উপাদান তৈরি করার সবচেয়ে কার্যকরী উপায় কী?
উত্তর:
যেহেতু এটি প্রায় jQuery
তখনই আমি মনে করি এটি (পরিষ্কার) পদ্ধতির (আপনি ব্যবহার করছেন) ব্যবহার করা ভাল think
$('<div/>', {
'id':'myDiv',
'class':'myClass',
'text':'Text Only',
}).on('click', function(){
alert(this.id); // myDiv
}).appendTo('body');
ডেমো।
এইভাবে, আপনি এমনকি নির্দিষ্ট উপাদানগুলির মতো ইভেন্ট হ্যান্ডলারগুলিও ব্যবহার করতে পারেন
$('<div/>', {
'id':'myDiv',
'class':'myClass',
'style':'cursor:pointer;font-weight:bold;',
'html':'<span>For HTML</span>',
'click':function(){ alert(this.id) },
'mouseenter':function(){ $(this).css('color', 'red'); },
'mouseleave':function(){ $(this).css('color', 'black'); }
}).appendTo('body');
ডেমো।
তবে আপনি যখন প্রচুর গতিশীল উপাদানগুলির সাথে কাজ করছেন, আপনার handlers
নির্দিষ্ট উপাদানগুলিতে ইভেন্ট যুক্ত করা এড়ানো উচিত , পরিবর্তে, আপনার কোনও প্রতিনিধি ইভেন্ট হ্যান্ডলার ব্যবহার করা উচিত, যেমন
$(document).on('click', '.myClass', function(){
alert(this.innerHTML);
});
var i=1;
for(;i<=200;i++){
$('<div/>', {
'class':'myClass',
'html':'<span>Element'+i+'</span>'
}).appendTo('body');
}
ডেমো।
সুতরাং, আপনি যদি একই শ্রেণীর সাথে শতভাগ উপাদান তৈরি করে বা সংযোজন করেন, অর্থাৎ ( myClass
) তবে ইভেন্ট ম্যানেজিংয়ের জন্য কম মেমরি গ্রাস করা হবে, কারণ সমস্ত গতিযুক্ত sertedোকানো উপাদানগুলির জন্য কাজ করার জন্য কেবলমাত্র একজন হ্যান্ডলার থাকবেন।
আপডেট: যেহেতু আমরা গতিশীল উপাদান তৈরি করতে নিম্নলিখিত পদ্ধতির ব্যবহার করতে পারি
$('<input/>', {
'type': 'Text',
'value':'Some Text',
'size': '30'
}).appendTo("body");
তবে size
এই পদ্ধতির সাহায্যে jQuery-1.8.0
বা পরে ব্যবহার করে অ্যাট্রিবিউট সেট করা যাবে না এবং এখানে একটি পুরানো বাগ রিপোর্ট রয়েছে , এই উদাহরণটি ব্যবহার করে দেখুন jQuery-1.7.2
যা দেখায় যে উপরের উদাহরণটি ব্যবহার করে size
অ্যাট্রিবিউট সেট করা আছে 30
তবে একই পদ্ধতির সাহায্যে আমরা size
ব্যবহার করে অ্যাট্রিবিউট সেট করতে পারি না jQuery-1.8.3
, এখানে হ'ল একটি অ-কার্যক্ষম ফিডল । সুতরাং, size
বৈশিষ্ট্যটি সেট করতে , আমরা নিম্নলিখিত পদ্ধতির ব্যবহার করতে পারি
$('<input/>', {
'type': 'Text',
'value':'Some Text',
attr: { size: "30" }
}).appendTo("body");
বা এই এক
$('<input/>', {
'type': 'Text',
'value':'Some Text',
prop: { size: "30" }
}).appendTo("body");
আমরা পাস করতে পারেন attr/prop
একটি শিশু অবজেক্ট হিসেবে কিন্তু এটি কাজ করে jQuery-1.8.0 and later
সংস্করণের পরীক্ষা এই উদাহরণে কিন্তু এটি কাজ করবে না এ jQuery-1.7.2 or earlier
(সমস্ত পূর্ববর্তী সংস্করণে পরীক্ষিত নয়)।
বিটিডাব্লু, jQuery
বাগ রিপোর্ট থেকে নেওয়া
বেশ কয়েকটি সমাধান রয়েছে। প্রথমটি হ'ল এটি একেবারেই ব্যবহার না করা, যেহেতু এটি আপনার কোনও স্থান সংরক্ষণ করে না এবং এটি কোডের স্বচ্ছতা উন্নত করে:
তারা নিম্নলিখিত পদ্ধতির ব্যবহার করার পরামর্শ দিয়েছিল ( পূর্বেরগুলিতেও কাজ করে , পরীক্ষিত 1.6.4
)
$('<input/>')
.attr( { type:'text', size:50, autofocus:1 } )
.val("Some text").appendTo("body");
সুতরাং, আইএমও, এই পদ্ধতির ব্যবহার করা আরও ভাল। আমি এই উত্তরটি পড়ার / খুঁজে পাওয়ার পরে এই আপডেটটি করা হয়েছে এবং এই উত্তরে দেখায় যে আপনি যদি এর 'Size'(capital S)
পরিবর্তে ব্যবহার করেন 'size'
তবে এটি ঠিক কাজ করবে , এমনকিversion-2.0.2
$('<input>', {
'type' : 'text',
'Size' : '50', // size won't work
'autofocus' : 'true'
}).appendTo('body');
প্রপ সম্পর্কেও পড়ুন , কারণ একটি পার্থক্য রয়েছে Attributes vs. Properties
, এটি সংস্করণগুলির মাধ্যমে পরিবর্তিত হয়।