Тип тега JavaScript в условном выражении, если - PullRequest
0 голосов
/ 09 ноября 2019

Я не понимаю, почему после нажатия button условие в if равно true. Я ожидал бы, что нажатие на упомянутую кнопку не выполнит инструкцию, если:

$('.table tbody tr').click(function (event) {
  if (event.target.type !== 'radio' && event.target.type !== 'button') {
    $(':radio', this).trigger('click');
    $("tr").removeClass("curr_default");
    $(this).addClass("curr_default");
  }
});
<table>
  <tbody>
    {% for curr in currs %}
    <tr class="{% if curr.default == curr.abbr %}curr_default{% endif %}">
      <th scope="row">{{ loop.index }}
        <span class="radio">
          <input type="radio" name="curr_default" />
        </span>
      </th>
      <td>{{ curr.abbr }}</td>
      <td>{{ curr.name }}</td>
      <td>
        <button id="{{ curr.id }}" onClick="get_currID(this.id)" type="button" class="btn p-0 w-auto"
          data-toggle="modal" data-target="#deleteCurrency">
          <span class="fa fa-trash text-danger"></span>
        </button>
      </td>
    </tr>
    {% endfor %}
  </tbody>
</table>

1 Ответ

0 голосов
/ 10 ноября 2019

При нажатии на button вы, скорее всего, нажмете span внутри button, а в click слушателе event.target.type будет undefined.

Так что вы либо переделываете свойусловие, чтобы покрыть другие элементы, или вы можете использовать pointer-events: none; (CSS) на span, чтобы щелчок ударил button вместо span.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...