JQuery ট্যাগ নাম প্রদান করতে পারেন?


115

আমি এইচটিএমএল পৃষ্ঠায় বেশ কয়েকটি উপাদান পেয়েছি যার একই বর্গ রয়েছে - তবে তারা বিভিন্ন উপাদান ধরণের। আমি এগুলির সাথে লুপ করার সাথে সাথে উপাদানটির ট্যাগের নামটি সন্ধান করতে চাই - তবে .attr "ট্যাগ" বা "ট্যাগ নাম" নেয় না।

এখানে আমি যা বলতে চাইছি তা এখানে। একটি পৃষ্ঠায় এই উপাদানগুলি বিবেচনা করুন:

<h1 class="rnd">First</h1>
<h2 id="foo" class="rnd">Second</h2>
<h3 class="rnd">Third</h3>
<h4 id="bar" class="rnd">Fourth</h4>

এখন আমি এই জাতীয় কিছু চালাতে চাই তা নিশ্চিত করার জন্য যে আমার উপাদানগুলির সকলের একটি আইডি রয়েছে যদি এটি ইতিমধ্যে সংজ্ঞায়িত না করা হয়:

$(function() {
  $(".rnd").each(function(i) {
    var id = $(this).attr("id");
    if (id === undefined || id.length === 0) {
      // this is the line that's giving me problems.
      // .attr("tag") returns undefined
      $(this).attr("id", "rnd" + $(this).attr("tag") + "_" + i.toString());
    }
  });
});

ফলাফলটি আমি চাই যে H2 এবং H4 উপাদানগুলির একটি আইডি থাকবে

rndh2_1
rndh4_3

যথাক্রমে।

"এই" দ্বারা প্রতিনিধিত্ব করা উপাদানটির ট্যাগ নামটি কীভাবে আবিষ্কার করতে পারি সে সম্পর্কে কোনও ধারণা?


1
সম্ভবত উত্তর এখানে: stackoverflow.com/a/8355251/271103
হাকান KOSE

উত্তর:


110
$(this).attr("id", "rnd" + $(this).attr("tag") + "_" + i.toString());

হতে হবে

$(this).attr("id", "rnd" + this.nodeName.toLowerCase() + "_" + i.toString());

18
আপনাকে এই.নোডনেম.টোলওয়ারক্যাস () ব্যবহার করতে হবে, কারণ HTML ডকুমেন্টের বেশিরভাগ ডিওএম উপস্থাপনা স্বয়ংক্রিয়ভাবে নোডনামকে বড়হীন করে দেয়।
নিকফিটস

এই.নোডনাম এবং এটি.ট্যাগনাম উভয়ই আমার পক্ষে কাজ করে বলে মনে হচ্ছে। সবাইকে ধন্যবাদ!
BigPigVT

5
নোডনাম উল্লেখ করার জন্য +1। কখনও কখনও, jQuery এক ধাপ অনেক দূরে :-)
সার্জ ওয়াটিয়ার

2
+1 jQuery হ'ল () কাজটি করে না কারণ এইচ 1, এইচ 2 ইত্যাদির ক্ষেত্রে 6 টি বিভিন্ন ক্ষেত্রে আপনার যদি হ্যান্ডেল করতে হয় তবে () ব্যবহার করা হয়।
কনস্ট্যান্টিন দিনভ

166

আপনি এটি চেষ্টা করতে পারেন:

if($(this).is('h1')){
  doStuff();
}

আরও বেশি () এর জন্য ডকগুলি দেখুন ।


12
যার জন্য এটি উদ্বিগ্ন হতে পারে: আপনি যদি আমার উত্তরকে হ্রাস করেন তবে দয়া করে আমাকে বলুন কেন আমি এটির উন্নতি করতে পারি এবং ভবিষ্যতের এসও-উত্তরগুলি শিখতে পারি। ধন্যবাদ।
মিডাস

3
আমিও এটি ঘৃণা করি। যাইহোক আমি উপবিষ্ট হয়েছি কারণ nodeNameএকটি স্ট্রিং দেয় যা ব্রাউজারের উপর নির্ভর করে আপার কেসড হয় না।
মার্সেল ফালিয়ের

2
নিম্নলিখিতটি ধরে নিন: আপনার কাছে কেবল সম্ভাব্য ট্যাগের একটি ছোট নির্বাচন নেই, তবে এটি কোনও 100+ এইচটিএমএল ট্যাগ হতে পারে। তারপরে আপনার লিখতে হবে: $ (এটি) is ('sometag') 100+ বার। আমি ধরে নিয়েছি এই কারণেই কিছু লোক আপনার উত্তরকে নীচু করে।
ximi 20

বাহ ... is('*')বছরগুলিতে কখনও দেখা যায়নি । এটি সম্ভবত ওপিটির উত্তর দেবে না তবে এটি আমার পক্ষে কাজ করেছে, ধন্যবাদ, @ মিদ্দুস!
অ্যালাস্টার

53

যেহেতু আমি এই প্রশ্নটি আগে একবার হিট করেছি এবং এটি আমার ক্ষেত্রে আমাকে সহায়তা করে না (আমার একটি ছিল না this, তবে এর পরিবর্তে একটি জিকুয়েরি নির্বাচক উদাহরণ ছিল)। কলিং get()আপনাকে এইচটিএমএল উপাদানটি পাবেন, যার মাধ্যমে আপনি nodeNameউপরে বর্ণিত হিসাবে পেতে পারেন ।

this.nodeName; // In a event handler, 'this' is usually the element the event is called on

অথবা

$('.hello:first-child').get(0).nodeName; // Use 'get' or simply access the jQuery Object like an array
$('.hello:first-child')[0].nodeName;     // will get you the original DOM element object

1
পৃষ্ঠায় প্রথম সহায়ক এক
মুরগি

47

আপনি $(this).prop('tagName');jQuery 1.6 বা ততোধিক উচ্চতর ব্যবহার করছেন তবে আপনি ব্যবহার করতে পারেন।


এটাই আমার দরকার ছিল। আমার ডিজাইনে, আমার কাছে jquery উপাদানটি কার্যকর ছিল, তবে আসল এইচটিএমএল ডিওএম উপাদান নয়। এটি আমার পক্ষে কাজ করে।
গিলথনস

আমি মনে করি এটি হ'ল সঠিক উত্তর যা এই প্রশ্নের বিষয়টির উত্তর দেয়।
কোডটুইটি


1

আমি মনে করি আপনি nodeNamejQuery এ ব্যবহার করতে পারবেন না যেহেতু নোডনাম একটি ডোম সম্পত্তি এবং jQuery নিজেই কোনও nodeNameফাংশন বা সম্পত্তি নেই। তবে যে উত্তরদাতা প্রথমে এই স্টাফটি সম্পর্কে উল্লেখ করেছেন তার উপর ভিত্তি করে nodeNameআমি এইভাবে সমস্যার সমাধান করতে সক্ষম হয়েছি:

this.attr("id", "rnd" + this.attr("nodeName") + "_" + i.toString());

দ্রষ্টব্য: thisএখানে একটি jQuery অবজেক্ট।


0

যেহেতু এটি একটি প্রশ্ন তাই আপনি গুগলে jquery ট্যাগ নাম ব্যবহার করে প্রথম সন্তানের জিজ্ঞাসা হিসাবে ব্যবহার করবেন আমি অন্য একটি উদাহরণ পোস্ট করব:

<div><p>Some text, whatever</p></div>

$('div').children(':first-child').get(0).tagName); // ...and not $('div:first-child')[...]

Jquery ফলাফল একটি (বড় হাতের) ট্যাগ নাম: পি


0

আপনি পুরো পৃষ্ঠায় এইচটিএমএল উপাদান ট্যাগ নাম পেতে পারেন।

আপনি ব্যবহার করতে পারেন:

        $('body').contents().on("click",function () {
          var string = this.tagName;
          alert(string);
         });

0
you can try:
jQuery(this).get(0).tagName;
or
jQuery(this).get(0).nodeName;

দ্রষ্টব্য: আপনার নির্বাচক (এইচ 1, এইচ 3 বা ...) এর সাথে এটি প্রতিস্থাপন করুন


0

আমি কেবল এটি অন্য সমস্যার জন্য লিখেছি এবং ভেবেছিলাম এটি আপনার উভয়কেও সহায়তা করতে পারে।

ব্যবহার:

  • অর্থাত onclick="_DOM_Trackr(this);"

পরামিতি:

  1. ডোম-অবজেক্ট ট্রেস করতে
  2. রিটার্ন / সতর্কতা স্যুইচ (alচ্ছিক, ডিফল্ট = সতর্কতা)

সোর্স কোড:

function _DOM_Trackr(_elem,retn=false)
{
    var pathTrackr='';
    var $self=$(_elem).get(0);
    while($self && $self.tagName)
    {
        var $id=($($self).attr("id"))?('#'+$($self).attr("id")):'';
        var $nName=$self.tagName;
        pathTrackr=($nName.toLowerCase())+$id+((pathTrackr=='')?'':' > '+(pathTrackr));
        $self=$($self).parent().get(0);
    }
    if (retn)
    {
        return pathTrackr;
    }
    else
    {
        alert(pathTrackr);
    }
}

উদাহরণ আউটপুট:html > body > div#coreApp > div#productpage > div#productpage-wrapper > div > div > div > div > div#pthumb12 > form#thumb_uploader_src > input
ক্রিস এস

আর একটি ব্যবহারের উদাহরণ: $('*').each(function(_i,_e){$(_e).attr('title',_DOM_Trackr(_e,true));});
ক্রিস এস

0

আপনার সমস্যা সমাধানের সর্বোত্তম উপায় হ'ল $(this).attr("tag")হয় this.nodeName.toLowerCase()বা এর সাথে প্রতিস্থাপন করা this.tagName.toLowerCase()

উভয়ই একই ফলাফল উত্পাদন!


0

দ্রুত ফিল্টার পদ্ধতিটি বিবেচনা করুন :

$('.rnd').filter('h2,h4')

আয়:

[<h2 id=​"foo" class=​"rnd">​Second​</h2>​, <h4 id=​"bar" class=​"rnd">​Fourth​</h4>​]

তাই:

$('.rnd').filter('h2,h4').each(function() { /*...$(this)...*/ });

0

পরিবর্তে সহজভাবে করুন:

$(function() {
  $(".rnd").each(function(i) {
    var id = $(this).attr("id");
    if (id === undefined || id.length === 0) {
      // this is the line that's giving me problems.
      // .attr("tag") returns undefined
      // change the below line...
      $(this).attr("id", "rnd" + this.tagName.toLowerCase() + "_" + i.toString()); 
  });
});
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.