Как я могу получить родительский идентификатор в jQuery?

#javascript #html #jquery

#javascript #HTML #jquery ( jquery )

Вопрос:

Я пытаюсь использовать closest с attr, но я не могу получить идентификатор.

 function checkID() {
  id = $(this).closest('div').attr('id');
  alert(id);
} 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="preview-image" id="prv-img">
  <div class="preview-remove" data-name="${fileName}" onclick="checkID()" id="prv-rmv">amp;times;</div>
  <img src="/images/examplefile.png" alt="">
  <div class="preview-info" id="prv-inf">${fileName}</div>
</div> 

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

1. Как и куда вы звоните checkID() ? Какое удостоверение личности вы хотите получить в конце концов?

Ответ №1:

Причина, по которой он не работает, заключается в том, что в вашей checkID() функции jQuery вы не знаете, на что this ссылаетесь, поэтому используйте:

 function checkID(obj) {
  var id = $(obj).closest('div').attr('id');
  alert(id);
}
 

и

 onclick="checkID(this)"
 

ДЕМОНСТРАЦИЯ

 function checkID(obj) {
  var id = $(obj).closest('div').attr('id');
  alert(id);
} 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="preview-image" id="prv-img">
  <div class="preview-remove" data-name="${fileName}" onclick="checkID(this)" id="prv-rmv">amp;times;</div>
  <img src="/images/examplefile.png" alt="">
  <div class="preview-info" id="prv-inf">${fileName}</div>
</div> 

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

1. Разве наши ответы не совпадают?

2. @SimoneRossaini Верно, они в основном одинаковы, разница только в том, что я добавил некоторое объяснение, почему это не работает. Я считаю, что лучше объяснить, почему это не работает, когда вы предоставляете решение

3. Я тоже не работал, потому что он не указывает элемент в вызове onclick. 🙂

4. @SimoneRossaini из временных меток двух ответов ясно, что они были написаны одновременно. Это происходит. Нет причин удалять один ответ, потому что кто-то другой сказал то же самое (несмотря на некоторые издевательства со стороны людей с очень высокой репутацией). Лично мне не нравится ваше «как вы можете использовать …?» в ответе , поскольку это унизительно для спрашивающего. Если бы они были сформулированы одинаково, все равно было бы до OP, какой ответ они приняли.

5. Я просто указал, что между двумя ответами не было никакой разницы, я не думаю, что я когда-либо просил что-либо удалить

Ответ №2:

Как вы можете использовать this функцию in? Вы должны указать «this» в onclick вызове, а затем использовать его в функции

 function checkID(el) {
        id = $(el).closest('div').attr('id');
        alert(id);
} 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="preview-image" id="prv-img">
    <div class="preview-remove" data-name="${fileName}" onclick="checkID(this)" id="prv-rmv">amp;times;</div>
    <img src="/images/examplefile.png" alt="">
    <div class="preview-info" id="prv-inf">${fileName}</div>
</div>