Как сделать так чтобы при клике на p внутри div кликалась только div в JS?

Чтобы при клике на элементы <p> внутри <div> был активирован только обработчик событий для самого <div>, а не для <p>, можно использовать механизм всплытия событий в JavaScript.

По умолчанию, события в JavaScript всплывают от вложенных элементов к родительским элементам, таким образом, при клике на <p> будет сначала вызван обработчик для <p>, а затем - для <div>.

Чтобы предотвратить всплытие события от <p> к <div>, можно воспользоваться методом stopPropagation() объекта события, который останавливает всплытие события.

Вот пример кода, который демонстрирует данное поведение:

<!DOCTYPE html>
<html>
<head>
    <title>Only div click event</title>
</head>
<body>
    <div id="testDiv" onclick="handleDivClick()">
        <p onclick="handleParagraphClick()">Click me</p>
    </div>

    <script type="text/javascript">
        function handleDivClick() {
            console.log('Div clicked');
        }

        function handleParagraphClick(event) {
            event.stopPropagation();
            console.log('Paragraph clicked');
        }
    </script>
</body>
</html>

В этом примере, при клике на <p> будет вызываться только обработчик для <p>, а обработчик для <div> не будет вызван благодаря использованию stopPropagation().