হ্যাঁ, আপনি যদি বানর-প্যাচটি স্বয়ংক্রিয়ভাবে সম্পূর্ণ করেন তবে আপনি এটি করতে পারেন।
JQuery UI এর v1.8rc3 এ অন্তর্ভুক্ত স্বতঃসম্পূর্ণ উইজেটটিতে, স্বতঃসিদ্ধ উইজেটের _renderMenu ফাংশনে পরামর্শের পপআপ তৈরি করা হয়। এই ফাংশনটি এভাবে সংজ্ঞায়িত করা হয়:
_renderMenu: function( ul, items ) {
var self = this;
$.each( items, function( index, item ) {
self._renderItem( ul, item );
});
},
_রেন্ডার আইটেম ফাংশনটি এর মতো সংজ্ঞায়িত হয়:
_renderItem: function( ul, item) {
return $( "<li></li>" )
.data( "item.autocomplete", item )
.append( "<a>" + item.label + "</a>" )
.appendTo( ul );
},
সুতরাং আপনাকে যা করতে হবে তা হ'ল _rendre আইটেম fn কে আপনার নিজের তৈরি দিয়ে প্রতিস্থাপন করা যা কাঙ্ক্ষিত প্রভাব তৈরি করে। এই কৌশলটি, একটি লাইব্রেরিতে অভ্যন্তরীণ ফাংশনটিকে নতুনভাবে সংজ্ঞায়িত করে আমি শিখতে এসেছি তাকে বানর-প্যাচিং বলা হয় । আমি এটি কীভাবে করেছি তা এখানে:
function monkeyPatchAutocomplete() {
// don't really need this, but in case I did, I could store it and chain
var oldFn = $.ui.autocomplete.prototype._renderItem;
$.ui.autocomplete.prototype._renderItem = function( ul, item) {
var re = new RegExp("^" + this.term) ;
var t = item.label.replace(re,"<span style='font-weight:bold;color:Blue;'>" +
this.term +
"</span>");
return $( "<li></li>" )
.data( "item.autocomplete", item )
.append( "<a>" + t + "</a>" )
.appendTo( ul );
};
}
একবার এই ফাংশন কল $(document).ready(...)
।
এখন, এটি হ্যাক, কারণ:
তালিকায় রেন্ডার করা প্রতিটি আইটেমের জন্য একটি রেজিপ্লেক্স আপত্তি তৈরি রয়েছে। এই regexp আপত্তি সব আইটেমের জন্য পুনরায় ব্যবহার করা উচিত।
সম্পূর্ণ অংশের বিন্যাসকরণের জন্য কোনও সিএসএস ক্লাস ব্যবহার করা হয়নি। এটি একটি ইনলাইন স্টাইল।
এর অর্থ একই পাতায় যদি আপনার একাধিক অটোকম্প্লেট থাকে তবে তারা সকলেই একই চিকিত্সা পাবেন। একটি সিএসএস শৈলী এটি সমাধান করবে।
... তবে এটি মূল কৌশলটি চিত্রিত করে এবং এটি আপনার প্রাথমিক প্রয়োজনীয়তার জন্য কাজ করে।
আপডেট হওয়া কাজের উদাহরণ: http://output.jsbin.com/qixaxinuhe
টাইপ করা অক্ষরের ক্ষেত্রে ব্যবহারের বিপরীতে ম্যাচের স্ট্রিংগুলির ক্ষেত্রে সংরক্ষণ করতে এই লাইনটি ব্যবহার করুন:
var t = item.label.replace(re,"<span style='font-weight:bold;color:Blue;'>" +
"$&" +
"</span>");
অন্য কথায়, উপরের মূল কোড থেকে শুরু করে, আপনাকে কেবল এটির this.term
সাথে প্রতিস্থাপন করতে হবে "$&"
।
সম্পাদনা করুন
উপরের পৃষ্ঠাটির প্রতিটি স্ব-পরিপূর্ণ উইজেট পরিবর্তন করে । আপনি যদি কেবল একটি পরিবর্তন করতে চান তবে এই প্রশ্নটি দেখুন:
কীভাবে কোনও পৃষ্ঠায় স্বতঃপূরণের * মাত্র একটি * উদাহরণ প্যাচ করবেন?