Для вас не сохранено ничего о расположении DOM, откуда был загружен исполняемый в данный момент JavaScript. Однако для достижения этой памяти вы можете использовать тот факт, что сценарии выполняются по мере их загрузки:
<div id="target">
<script>
var thisScript1 = $('script').filter(':last');
$(document).ready(function () {
console.log(thisScript1.closest('div').attr('id')); // prints 'target'
});
</script>
</div>
<div id="second">
<script>
var thisScript2 = $('script').filter(':last');
$(document).ready(function () {
console.log(thisScript2.closest('div').attr('id')); // prints 'second'
});
</script>
</div>
Здесь $('script').filter(':last');
относится к последнему элементу сценария на странице, который на момент выполнения является «текущим сценарием». Обратите внимание, что для каждого скрипта, который я хочу запомнить, я назвал переменную, в которой находится объект скрипта, иначе он будет перекрыт последующими скриптами. Альтернативой может быть завершение каждого сценария в немедленно выполняемую анонимную функцию, для роскоши связывания локальной переменной thisScript
.