#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>