Получение родительских текстовых данных с помощью «this» jquery

#javascript #jquery #text #onclick #parent

#javascript #jquery #текст #onclick #родительский

Вопрос:

У меня есть следующая структура HTML в моей СТРУКТУРЕ HTML документа

[! [введите описание изображения здесь][1]][1]

Мне нужно захватить info__meta-dates текст, чтобы указать только дату, используя onClick событие в jQuery, это код, который у меня есть до сих пор:

  $("input[type=checkbox]").click(function (e) {
       
            $(this)
                .parent()
                .parent()
                .parent()
                .find(".info__meta--dates")
                .text()
         );
});
 

Но я также получаю date текст, который находится внутри вложенного диапазона.

Комментарии:

1. Привет, вы пробовали приведенный ниже код?

2. @Swati Привет, да, это работает идеально! просто добавил ваше решение как одно 🙂

Ответ №1:

Вы можете clone использовать этот тег span и использовать .remove() remove mdc-typography--caption из клонированного элемента, чтобы конечным результатом был только тот текст, который вам нужен

Демонстрационный код :

 $("input[type=checkbox]").click(function(e) {
  var texts = $(this).closest(".ev-info_meta").find(".info__meta--dates").clone(); //clone that span tag
  texts.find('span.mdc-typography--caption').remove(); //remove elemnt with class mdc-typography--caption
  console.log(texts.text().trim()); //show 
}); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="ev-info_meta">
  <span class="info__meta--dates"><span class="mdc-typography--caption">dates</span> fffff</span>
  <div>
    <input type="checkbox">
  </div>
</div> 

Ответ №2:

Поскольку прямого элемента для получения даты нет, вы можете попробовать описанный выше метод, описанный Swati, и если вы не хотите удалять элемент из DOM, попробуйте метод обработки строк.

Приведенный ниже метод работает только для этого сценария.

 $("input[type=checkbox]").click(function (e) {
       
         let dateString =  $(this).parent()
                .parent()
                .parent()
                .find(".info__meta--dates")
                .text()
         );
       //removing the "date" string from the entire string
       let date = dateString.substring(4,dateString.length).trim();
       console.log(date);
});