티스토리 뷰

반응형

 <tr onclick="loadForm('modify', '<?=$row['num']?>');">
                <td class="text-center"><?= $start_num ?></td>
                <td class="text-center"><?= $row['reg_date'] ?></td>
                <td class="text-center"><?= $row['box_width'] ?> X <?= $row['box_height'] ?>  </td>
                <td class="text-center fw-bold text-success"><?= $row['check_type'] ?></td>
                <td class="text-center"><?= $row['front_bottom_width'] ?></td>
                <td class="text-center"><?= $row['rail_width'] ?></td>
                <td class="text-center"> <span class="badge bg-dark"> 전개 보기 </span> </td>
                <td class="text-center"><?= $row['author'] ?></td>
                <td class="text-start"><?= $row['remark'] ?></td>
            </tr>

위의 코드에서 전개 보기를 누르면 다른게 onclick되게 하려면 어떤게 가장 좋은 코드인가?


위의 코드에서 "전개 보기" 버튼을 클릭했을 때 다른 기능이 동작하도록 하려면, 이벤트 버블링을 막아야 합니다. 이를 위해 "전개 보기" 버튼의 클릭 이벤트를 따로 정의하고, 해당 이벤트가 발생했을 때만 특정 함수가 실행되도록 할 수 있습니다.

아래는 이를 구현한 예시 코드입니다:


<tr onclick="loadForm('modify', '<?=$row['num']?>');">
    <td class="text-center"><?= $start_num ?></td>
    <td class="text-center"><?= $row['reg_date'] ?></td>
    <td class="text-center"><?= $row['box_width'] ?> X <?= $row['box_height'] ?>  </td>
    <td class="text-center fw-bold text-success"><?= $row['check_type'] ?></td>
    <td class="text-center"><?= $row['front_bottom_width'] ?></td>
    <td class="text-center"><?= $row['rail_width'] ?></td>
    <td class="text-center">
        <span class="badge bg-dark" onclick="viewUnfold(event, '<?=$row['num']?>');"> 전개 보기 </span>
    </td>
    <td class="text-center"><?= $row['author'] ?></td>
    <td class="text-start"><?= $row['remark'] ?></td>
</tr>


JavaScript 코드 추가:
function viewUnfold(event, num) {
    // 이벤트 버블링을 막아, 부모 요소의 onclick 이벤트가 실행되지 않게 합니다.
    event.stopPropagation();

    // 여기서 전개 보기를 위한 기능을 수행합니다.
    console.log('전개 보기 클릭됨, num:', num);
    // 원하는 기능을 추가하세요. 예: 모달 열기, 새로운 페이지로 이동 등
}


설명:
onclick="loadForm('modify', '<?=$row['num']?>');": <tr> 요소 전체에 대한 클릭 이벤트입니다. loadForm 함수가 호출됩니다.
event.stopPropagation();: 이벤트 버블링을 막기 위해 사용됩니다. 이로 인해 "전개 보기" 버튼을 클릭했을 때는 부모의 onclick 이벤트가 실행되지 않습니다.
viewUnfold(event, '<?=$row['num']?>');: "전개 보기" 버튼에 대한 클릭 이벤트입니다. 이 버튼을 클릭했을 때만 viewUnfold 함수가 실행됩니다.
이 구조를 사용하면 "전개 보기" 버튼 클릭 시에는 해당 버튼의 기능만 동작하게 할 수 있습니다. 다른 <tr> 클릭 시 loadForm 함수가 호출되는 동작은 여전히 유지됩니다.

반응형
댓글