স্পেস সহ jquery আইডি


127

যে আইডিটির কোনও স্থান রয়েছে, তখন কি jQuery সহ আইডি দ্বারা ডিওমে কোনও আইটেম নির্বাচন করতে হয় তা কি কেউ জানেন?

উদাহরণস্বরূপ, আমার আইটেমের আইডি হবে

<div id="content Module">Stuff</div>

আমি কীভাবে jQuery দিয়ে এটি নির্বাচন করব?

আমি যদি শুধু করি

$("#content Module").whatever() 

jQuery সামগ্রীর আইডি এবং মডিউলের আইডি উভয়ই একটি আইটেম সন্ধান করার চেষ্টা করবে যা আমি যা খুঁজছি তা নয়।

আমার যুক্ত করা উচিত যে আমি একটি পুরানো কোড বেস নিয়ে কাজ করছি যেখানে এই দুটি শব্দ আইডির ব্যাপকভাবে ব্যবহৃত হয়, তাই সমস্ত আইডি দিয়ে যাওয়া এবং পরিবর্তন করা খারাপ হবে।


@ গ্লাভিć আপনার সমস্ত বক্তব্য সত্য। তবে, নতুনভাবে গৃহীত উত্তরগুলি এমন লোকদের জন্য আরও সহায়ক হবে যাদের এই সমাধানটির সত্যই প্রয়োজন। যারা সত্যিকার অর্থে আটকে আছেন, জায়গাগুলি কীভাবে মোকাবেলা করতে হবে তা জেনে রাখা তাদের সত্যই প্রয়োজন।
জেফ ডেভিস

হ্যাঁ, এটি সত্য, তবে আমার
উত্তরটিতে

1
আইডির পরিবর্তে আইডি সঠিকভাবে লেখার জন্য আপভোট করুন। দুঃখিত, পোষা প্রাণবন্ত এবং হ্যাঁ, আমি জানি বেশিরভাগ লোকেরা সংক্ষিপ্ত শব্দ এবং সংক্ষিপ্ত শব্দগুলিকে বহুবচনের
জুয়ান মেন্ডেস

উত্তর:


253

একটি বৈশিষ্ট্য নির্বাচনকারী ব্যবহার করুন।

$("[id='content Module']").whatever();

অথবা, আরও ভাল, ট্যাগটিও উল্লেখ করুন:

$("div[id='content Module']").whatever();

মনে রাখবেন যে $ ('# আইডি') এর বিপরীতে, যদি আপনার পৃষ্ঠায় একই আইডি সহ একাধিক উপাদান থাকে তবে এটি একাধিক উপাদান ফিরিয়ে দেবে।


1
এমনকি গ্লাভিকের উত্তরটি সেরা পরামর্শ। আমি মনে করি এই উত্তরটি সমস্যার সমাধান করেছে :)
GusDeCooL

8
এটি আমাকে প্রচুর সাহায্য করেছে। আমি অজ্যাক্সের মাধ্যমে কিছু ভয়ঙ্কর এইচটিএমএল পড়ছি এবং এইচডিএমএল বা আইডিগুলির ফর্ম্যাটটির কোনও নিয়ন্ত্রণ নেই no তাদের আইডিগুলির মধ্যে স্পেস রয়েছে, তাই এলিয়টের উত্তরটি দুর্দান্তভাবে সহায়তা করে, যেখানে গ্ল্যাভিকের কোনও লাভ নেই।
দিবস ব্রেকার

ধন্যবাদ, দুর্দান্ত উত্তর!
alcfeoh

62

স্পেস ব্যবহার করবেন না, এর কারণটি সহজ, স্পেস অক্ষর আইডি বৈশিষ্ট্যের জন্য বৈধ নয়।

আইডি টোকেনগুলি অবশ্যই একটি অক্ষরের ([এ-জা-জেড]) দিয়ে শুরু হওয়া উচিত এবং এর পরে সংখ্যক বর্ণ, অঙ্ক ([0-9]), হাইফেনস ("-"), আন্ডারস্কোর ("_"), কলোন (":"), এবং পিরিয়ড ("।")।

আপনি যদি স্ট্যান্ডার্ড সম্পর্কে যত্ন না করেন তবে চেষ্টা করুন $("[id='content Module']")

অনুরূপ থ্রেড> এইচটিএমএলে আইডি বৈশিষ্ট্যের জন্য বৈধ মানগুলি কী?

সম্পাদনা করুন: HTML 4.01 এবং HTML5 এর মধ্যে আইডি কীভাবে আলাদা হয়

এইচটিএমএল 5 আইডি বৈশিষ্ট্যের অতিরিক্ত বাধা থেকে মুক্তি পেয়ে যায়। দস্তাবেজটিতে অনন্য হওয়া বাদে কেবলমাত্র প্রয়োজনীয়তাগুলি হ'ল - মানটিতে কমপক্ষে একটি অক্ষর থাকা উচিত (খালি থাকতে পারে না) এবং এতে কোনও স্থানের অক্ষর থাকতে পারে না।

লিঙ্ক: http://mathiasbynens.be/notes/html5-id-class


4
+1 টি। নামকরণের মান অনুসরণ করে এবং তারপরে আপনি যখন তাদের অনুসরণ না করেন তখন কাজের জন্য আপনাকে কিছু করতে হবে না।
ম্যাট বি

এটি ডিসপ্লেতে দ্বিতীয় শব্দটি ছাঁটাই করার ধারণাটিকে ট্রিগার করেছিল যাতে আমার বৈধ আইডিস রয়েছে। বিষয়টির যত্ন নিয়েছি, ধন্যবাদ!
জেফ ডেভিস

1
আপনি এখানে HTML 4.01 স্পেসটি উদ্ধৃত করছেন quot যদিও এটি এখনও আইডি বৈশিষ্ট্যের মানগুলিতে স্পেস অক্ষর ব্যবহার করার অনুমতি নেই, এইচটিএমএল 5 এর মধ্যে বেশিরভাগ বিধিনিষেধের হাত থেকে মুক্তি পাবে:
ম্যাথিয়াসবাইনেস.বেস / নোটস

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

হাস্যকর. স্পেসগুলি বেশিরভাগ কাজের জন্য ঠিকঠাক কাজ করে, কেন তাদের অযৌক্তিক করে তুলবে?
লোডেভিজক

23

যদি কেউ কৌতূহলী হয় তবে আমি দেখতে পেয়েছি যে স্থানটি থেকে বেরিয়ে আসা কাজ করবে। লক্ষ্য ডিওমের উপর আপনার নিয়ন্ত্রণ না থাকাতে এটি বিশেষত কার্যকর (উদাহরণস্বরূপ কোনও ইউজার স্ক্রিপ্টের মধ্যে থেকে):

$("#this\\ has\\ spaces");

ডাবল-ব্যাকস্ল্যাশটি নোট করুন, যা প্রয়োজনীয়।


তারপরে জাভাস্ক্রিপ্ট নিজেই অন্য কোনও ভাষায় স্ট্রিং ধ্রুবক হলে 4 টি ব্যাকস্ল্যাশ পর্যন্ত up
ব্রিলিয়ান্ড

2
তারপরে 8 টি ব্যাকস্ল্যাশ পর্যন্ত যদি অন্য ভাষাটি অন্য একটি ভাষায় নিজেই একটি স্ট্রিং ধ্রুবক থাকে :)
daniel1426

1
স্ট্রিং পুনরাবৃত্তভাবে পালিয়ে গেলে এটিতে স্ট্যাকের ওভারফ্লো হয়
জেফ ডেভিস

7

ক্রিস প্রস্তাবিত পদ্ধতিটি সম্ভবত jQuery ফাংশনগুলির সাথে কাজ করতে খাপ খাইয়ে নিতে পারে।

var element = document.getElementById('content Module');
$(element) ... ;

1
আহা! আরও নিচে স্ক্রোল করা উচিত ছিল!
getomanners

2

চেষ্টা করার একটি ধারণা:

$("#content" + &amp;#032; + "Module").whatever()

$("#content" + %20 + "Module").whatever()

সেমিকোলন জাভাস্ক্রিপ্ট ত্রুটির কারণ হতে পারে। আমি কোনও জায়গা না থাকার জন্য আইডি পরিবর্তন করার পরামর্শ দিচ্ছি।

এছাড়াও, চেষ্টা করুন document.getElementByID("content Module")


1
document.getElementByID আমাকে নিয়মিত অবজেক্ট দেয় এবং তারপরে আমি যে jQuery ফাংশনগুলি খুঁজছি তা করতে পারি না। তবে, একই পরিস্থিতিতে আশেপাশের একটি ভাল কাজ হবে।
জেফ ডেভিস 20

1
করবে না $(document.getElementByID("content Module"))আপনি একটি jQuery বস্তুর দেব?
getomanners

1

এটি আমার পক্ষে কাজ করেছে।

document.getElementById(escape('content Module'));

0

এইচটিএমএলতে আইডি বৈশিষ্ট্যযুক্ত মানটিতে একটি স্থান থাকা প্রযুক্তিগতভাবে অবৈধ থাকাকালীন আপনি jQuery ব্যবহার করে এটি চয়ন করতে পারেন।

Http://mothereffingcssescapes.com/# কনটেন্ট ১০20 মডিউলটি দেখুন :

<script>
  // document.getElementById or similar
  document.getElementById('content module');
  // document.querySelector or similar
  $('#content\\ module');
</script>

jQuery একটি নির্বাচক এপিআই-এর মতো সিনট্যাক্স ব্যবহার $('#content\\ module');করে , যাতে আপনি উপাদানটি নির্বাচন করতে ব্যবহার করতে পারেন id="content module"

সিএসএসে উপাদানটিকে লক্ষ্য করতে, আপনি এটির মতো এড়াতে পারেন:

<style>
  #content\ module {
    background: hotpink;
  }
</style>

0

আপনি যদি আইডিটির উপাদানটির সঠিক মান রাখতে চান তবে এটি কাজ করতে পারে

$("[id='content Module']").whatever();

তবে আপনি যদি চেক করতে চান যে উপাদানগুলির মধ্যে কেবলমাত্র একটির রয়েছে (ঠিক শ্রেণির মতো) অন্যান্য আইডিসহ বা ছাড়া

$("[id~='content']").whatever();

যদি এটা আছে এই উপাদান নির্বাচন করব id="content"বা id="content Module"বাid="content Module other_ids"


0

আমি আমার ক্ষেত্রে খুঁজে পেয়েছি যে পলায়ন কাজ করে না কারণ এটি স্থানগুলি% 20 এর সাথে প্রতিস্থাপন করে। আমি পরিবর্তে প্রতিস্থাপন ব্যবহার করেছি যেমন পৃষ্ঠার এইচ 1 প্রতিস্থাপনের জন্য একটি তালিকা আইটেমের পাঠ্য দিয়ে। যদি মেনুতে থাকে:

<li id="Contact Us"\>Contact Us</li>

function setTitle(menu) {
    $("h1").text( $("li#" + menu.replace(" ", "\\ ")).text() );
}

0

আমি jQuery এর কমা এবং / অথবা স্পেস সহ উপাদানগুলির আইডির সমস্যা ছিল, তাই আমি এটি করেছি এবং এটি একটি কবজির মতো কাজ করেছে:

var ele = $(document.getElementById('last, first'));

এটিতে ফাঁকা স্থান রয়েছে এবং এটি কাজ করে না:

var ele = $('#last, first');

এটিতে কমা রয়েছে এবং এটি কার্যকর হয় না:

var ele = $('#last,first');


0

সিলেক্টারে কোনও ফাঁকে ফাঁকে ফাঁকে ফাঁকা স্থান (স্থান সহ)

var escapeSelector = function(string) {
  string = string||"";
  if (typeof string !== 'string') return false;
    return string.replace( /(:|\.|\[|\]|,|=|@|\s|\(|\))/g, "\\$1" );

}
console.log($("div[data-id="+escapeSelector("Document (0).json")+"]").text());   
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div data-id="Document (0).json">Howdy</div>

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.