যদিও হিসাবে সুন্দর না querySelectorAll
এটির (যার মধ্যে ইস্যুগুলির লিটানি রয়েছে), এখানে একটি খুব নমনীয় ফাংশন রয়েছে যা ডিওএমকে পুনরাবৃত্তি করে এবং বেশিরভাগ ব্রাউজারে (পুরানো এবং নতুন) কাজ করা উচিত। যতক্ষণ না ব্রাউজার আপনার শর্তটি সমর্থন করে (যেমন: ডেটা অ্যাট্রিবিউটস), আপনার উপাদানটি পুনরুদ্ধার করতে সক্ষম হওয়া উচিত।
কৌতুহলকারীদের কাছে: জেএসফ্রুতে এই বনাম কিউএসএ পরীক্ষার বিরক্ত করবেন না। অপেরা 11 এর মতো ব্রাউজারগুলি ক্যোয়ারীটিকে ক্যাশে করবে এবং ফলাফলগুলি আঁকবে।
কোড:
function recurseDOM(start, whitelist)
{
/*
* @start: Node - Specifies point of entry for recursion
* @whitelist: Object - Specifies permitted nodeTypes to collect
*/
var i = 0,
startIsNode = !!start && !!start.nodeType,
startHasChildNodes = !!start.childNodes && !!start.childNodes.length,
nodes, node, nodeHasChildNodes;
if(startIsNode && startHasChildNodes)
{
nodes = start.childNodes;
for(i;i<nodes.length;i++)
{
node = nodes[i];
nodeHasChildNodes = !!node.childNodes && !!node.childNodes.length;
if(!whitelist || whitelist[node.nodeType])
{
//condition here
if(!!node.dataset && !!node.dataset.foo)
{
//handle results here
}
if(nodeHasChildNodes)
{
recurseDOM(node, whitelist);
}
}
node = null;
nodeHasChildNodes = null;
}
}
}
তারপরে আপনি নিম্নলিখিতটি দিয়ে এটি সূচনা করতে পারেন:
recurseDOM(document.body, {"1": 1});
গতি জন্য, বা ঠিক recurseDOM(document.body);
আপনার স্পেসিফিকেশন সহ উদাহরণ: http://jsbin.com/unajot/1/edit
পৃথক পৃথককরণের উদাহরণ: http://jsbin.com/unajot/2/edit
document.querySelectorAll
আই 7 এ কাজ করে না তা মনে রাখবেন । আপনাকে একটি ফ্যালব্যাক স্ক্রিপ্ট তৈরি করতে হবে যা ডিওএম গাছের উপর দিয়ে চলবে এবং প্রতিটি ট্যাগের অ্যাট্রিবিউটের জন্য যাচাই করবে (আসলে আমি জানি না কত দ্রুতquerySelectorAll
হয়, এবং ট্যাগগুলির ম্যানুয়াল চেক করতে পারি)।