আইডিতে কোনও বিন্দু থাকে যখন কীভাবে jquery সহ আইডি দ্বারা এইচটিএমএল নোডগুলি নির্বাচন করবেন?


178

আমার এইচটিএমএল দেখতে যদি এমন হয়:

<td class="controlCell">
    <input class="inputText" id="SearchBag.CompanyName" name="SearchBag.CompanyName" type="text" value="" />
</td>

আমি কীভাবে JQuery এর সাথে # সার্চব্যাগ.কম্পিনি নামটি নির্বাচন করতে পারি? আমি এটি কাজ করতে পারি না এবং আমি আশঙ্কা করি এটি বিন্দুটি এটি ভেঙে ফেলেছে। বিরক্তিকর বিষয় হ'ল আমার সমস্ত আইডির নাম পরিবর্তন করা অনেক কাজ হবে, পাঠযোগ্যতার ক্ষতির কথা উল্লেখ না করে।

দ্রষ্টব্য:
দয়া করে কীভাবে লে-আউটিংয়ের জন্য টেবিল তৈরি করা হয় তা নিয়ে কথা বলা শুরু করা উচিত নয়। আমি সিএসএসের মান এবং ত্রুটিগুলি সম্পর্কে খুব সচেতন এবং যথাসম্ভব এটি ব্যবহার করার জন্য কঠোর চেষ্টা করছি।


1
কোনও আইডির একটি সময়কালে কি বৈধ এইচটিএমএল থাকে?
ক্লিটাস

7
হ্যাঁ. আইডিগুলিতে '-', '_', 'থাকতে পারে। এবং ':'. w3.org/TR/html4/tyype.html#type-name
বোবিনস

জেপস, আমার পৃষ্ঠাগুলি সমস্ত ডাবল <শিরোনাম> ট্যাগটি বাদে যাচাইপথ এমভিসি ফ্রেমওয়ার্কটি জেনারেট করে ..
বোরিস

উত্তর:


215

@ টোমালাক মন্তব্যগুলিতে:

যেহেতু আইডি নির্বাচনকারীদের অবশ্যই একটি হ্যাশ # এর আগে হওয়া উচিত, সুতরাং এখানে কোনও দ্বিধা প্রকাশ করা উচিত নয়

"# Id.class" হ'ল একটি বৈধ নির্বাচনকারী যা একটি আইডি এবং পৃথক ক্লাস উভয়ই মেলে প্রয়োজন; এটি বৈধ এবং সর্বদা সম্পূর্ণ অপ্রয়োজনীয় নয়।

আক্ষরিক 'নির্বাচন করার সঠিক উপায়' ' সিএসএসে এটি এড়ানোর জন্য: "# আইডি more .মোরিড"। এটি কিছু পুরানো ব্রাউজারগুলিতে (বিশেষত আই 5.x) সমস্যা তৈরি করতে ব্যবহৃত হত, তবে সমস্ত আধুনিক ডেস্কটপ ব্রাউজার এটি সমর্থন করে।

একই পদ্ধতিটি jQuery 1.3.2 তে কাজ করছে বলে মনে হচ্ছে, যদিও আমি এটি পুরোপুরি পরীক্ষা করে দেখিনি; কুইকএক্সপ্রস এটি বাছাই করে না, তবে আরও জড়িত নির্বাচক পার্সার এটি সঠিক বলে মনে হচ্ছে:

$('#SearchBag\\.CompanyName');

1
"# আইডি.ক্লাস একটি বৈধ নির্বাচনকারী যা একটি আইডি এবং মেলাতে পৃথক শ্রেণি উভয়ই প্রয়োজন": এইচটিএমএল অনুমান অনুসারে, ডকুমেন্ট জুড়ে আইডি অবশ্যই অনন্য হতে হবে। "# Id.class" কি জন্য ভাল হবে? আমি বলতে চাইছি আপনি "# আইডি" এর চেয়ে বেশি নির্দিষ্ট হতে পারবেন না, পারবেন কি?
তোমালাক

2
@ টম: একই স্টাইলশীটটি ব্যবহার করে, বা ক্লায়েন্ট-সাইড-স্ক্রিপ্টিং সহ স্টেটস সেট করা একাধিক ডকুমেন্টের জন্য "# id.class" ভাল হতে পারে। উদাহরণস্বরূপ, "# নাভোম.নোস্লেভড"।
বোবিন্স

@ ববিন্স: হ্যাঁ, ক্লিটাস একই উদাহরণটি নিয়ে এসেছিল এবং আমি অনুমান করি যে এটি বৈধ। তবুও এটি আমার কাছে অদ্ভুত লাগছে এবং আমি এটি করতে সক্ষম হওয়ার আসল সুবিধাটি দেখতে পাচ্ছি না। বিশেষত এইচটিএমএল এর আলোকে আইডিতে বিন্দুর অনুমতি দেয় এবং এটি অর্জনের জন্য আপনি সর্বদা ".নস্বেলেক্টড" ব্যবহার করতে পারেন।
তোমালাক

আপনি, উদাহরণস্বরূপ, একটি নির্বাচিত # নোহোমকে একটি নির্বাচিত # নবাবের কাছে আলাদা রঙে আলোকিত করতে চান তবে অন্যটি নির্বাচিত বৈশিষ্ট্যগুলি ভাগ করা উচিত। আমি বলব না যে এই পরিস্থিতিটি সর্বদা উত্থিত হয়, তবে আমি অবশ্যই মাঝে মাঝে এটির প্রয়োজন ছিল।
বোবিনস

3
আমি মনে করি @ তোমালকের উত্তরটি আরও মার্জিত, যেমন:$('[id="profile.birthdate"]')
dr.dimitru

118

একটি বৈকল্পিক হ'ল:

$("input[id='SearchBag.CompanyName']")

1
প্রকৃতপক্ষে. আপনি কি আমাকে বলতে পারেন যে আপনার সমাধান কেন কাজ করে এবং $ ("# SearchBag.CompanyName") কাজ করে না?
বরিস কলেনস 9

9
কারণ .কম্পানিমন একটি শ্রেণি নির্বাচক হিসাবে বিবেচিত হয়।
ক্লিটাস

2
উত্স কোডটি তাত্ক্ষণিকভাবে অনুসন্ধান করা, এটি হয় ইচ্ছাকৃতভাবে নকশার সিদ্ধান্ত বা কোনও বাগ। আইডি নির্বাচনকারীদের সনাক্ত করতে ব্যবহৃত রেজেক্স (কুইকএক্সপিআর নামযুক্ত) কোনও বিন্দুটিকে বৈধ অক্ষর হিসাবে অন্তর্ভুক্ত করে না। এইচটিএমএল স্পেস এটি অনুমতি দেয়।
টমলাক

5
আইডিতে ক্লাস সিলেক্টর থাকা সম্ভবত দরকারী। কল্পনা করুন যে আপনার প্রতিটি পৃষ্ঠায় একটি # মেনু উপাদান রয়েছে তবে এটি আপনার পৃষ্ঠাগুলির একটিতে আলাদা করতে চান। উদাহরণস্বরূপ # মেনু.হাইডেম? প্রান্তিক আমি জানি তবে এটি বৈধ।
ক্লিটাস

2
এটি পরিষ্কারভাবে উচ্চতর উত্তর। এর মতো চলকগুলির সাথেও কাজ করে: $ ("টিআর [আইডি = '" + ব্যক্তিগত_ভর + "']")। সিএসএস ("পটভূমি-বর্ণ", "#EEEEE");
স্টিভ কে

33

আপনি যদি কিছু ব্যবহার করেন তবে আপনাকে পালাতে হবে না document.getElementById:

$(document.getElementById('strange.id[]'))

getElementById ধরে নিই ইনপুটটি কেবল একটি আইডি বৈশিষ্ট্য, সুতরাং বিন্দুটিকে কোনও শ্রেণি নির্বাচক হিসাবে ব্যাখ্যা করা হবে না।


ঝরঝরে সমাধান, ডিনামিক আইডির সাথেও দুর্দান্তভাবে কাজ করে যাতে বিন্দু থাকতে পারে
কুকালিনো

17

সংক্ষিপ্ত উত্তর : আপনার আইডি = সহ কোনও উপাদান থাকলে "foo.bar"আপনি নির্বাচকটি ব্যবহার করতে পারেন$("#foo\\.bar")

দীর্ঘ উত্তর : এটি jquery ডকুমেন্টেশনের অংশ - বিভাগ নির্বাচনকারী যা আপনি এখানে পেতে পারেন: http://api.jquery.com/category/selectors/

আপনার প্রশ্নের ডকুমেন্টেশনের শুরুতে উত্তর দেওয়া হয়েছে:

আপনি যদি কোনও মেটা-অক্ষর ব্যবহার করতে চান (যেমন 
! "# $% & '() * +,। /:;? @ [[\] ^` {|} ~) 
একটি নামের আক্ষরিক অংশ হিসাবে, আপনাকে অবশ্যই এই চরিত্রটি দিয়ে পালাতে হবে 
দুটি ব্যাকস্ল্যাশ: \\। উদাহরণস্বরূপ, আপনার যদি id = "foo.bar" সহ একটি উপাদান থাকে,
আপনি নির্বাচক use ("# foo \\। বার") ব্যবহার করতে পারেন। ডাব্লু 3 সি সিএসএসের স্পেসিফিকেশনটিতে রয়েছে
বৈধ CSS সিলেক্টর সম্পর্কিত বিধিগুলির সম্পূর্ণ সেট। এছাড়াও দরকারী
সনাক্তকারীদের জন্য সিএসএস চরিত্রের পালানোর সিকোয়েন্সগুলিতে ম্যাথিয়াস বেনেন্সের ব্লগ এন্ট্রি।

4
আপনি বুঝতে পারছেন যে এই প্রশ্নটি তিন বছরেরও বেশি পুরানো এবং ডকুমেন্টেশনগুলি তখন ঠিক একইরকম হতে পারে না?
রিমিয়াস

9

আপনার আইডি ভেরিয়েবলের ক্ষেত্রে অ্যাটর নির্বাচনটি উপযুক্ত বলে মনে হয়:

var id_you_want='foo.bar';
$('[id="' + id_you_want + '"]');

4

এটি jQuery নির্বাচক এপিআই এ নথিভুক্ত করা হয়েছে :

মেটা-অক্ষর (যেমন ব্যবহারের !"#$%&'()*+,./:;<=>?@[\]^`{|}~) একটি নামের একটি আক্ষরিক অংশ হিসেবে এটিকে দুটি ব্যাকস্ল্যাশ সঙ্গে পলান করতে হবে: \\। উদাহরণস্বরূপ, এর সাথে একটি উপাদান id="foo.bar"নির্বাচকটি ব্যবহার করতে পারে $("#foo\\.bar")

সংক্ষেপে বলতে গেলে, প্রেফিক্স .সঙ্গে \\

$('#SearchBag\\.CompanyName')

সমস্যাটি হ'ল .কোনও ক্লাসের $('#SearchBag.CompanyName')সাথে মিলবে , তাই মিলবে <div id="SearchBag" class="CompanyName">। সাথে পালানোটিকে কোনও বিশেষ তাত্পর্য না করে, \\.স্বাভাবিক হিসাবে বিবেচনা করা হবে ., আপনার ইচ্ছুক আইডির সাথে মেলে।

এটি এমন সমস্ত চরিত্রের জন্য প্রযোজ্য !"#$%&'()*+,./:;<=>?@[\]^`{|}~যা jQuery এ নির্বাচক হিসাবে অন্যথায় বিশেষ তাত্পর্য রাখে।


2

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

"Str1.str2% str3"। স্থান (/ [^ \ w \ s] / জিআই, '\\ $ &')

"Str1 \\। str2 \\% str3" প্রদান করে

আশা করি এটি কার্যকর!


1

আপনি একটি বৈশিষ্ট্য নির্বাচনকারী ব্যবহার করতে পারেন:

$("[id='SearchBag.CompanyName']");

অথবা আপনি উপাদান ধরণের নির্দিষ্ট করতে পারেন:

$("input[id='SearchBag.CompanyName']");
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.