Есть ли способ сделать || или оператор с функцией щелчка с использованием Jquery?

Мне интересно, могу ли я иметь функцию, которая запускается либо нажатием на div, либо нажатием клавиши пробела. Я не могу вспомнить, чтобы когда-либо видел такую ​​​​функцию... есть ли способ сделать это?

$('.button').click || keypress.keyCode === 32 (function() { 
    //do something
)};

person Jeff    schedule 23.10.2019    source источник


Ответы (4)


Нравится:

$(function(){
    $('#div').on('keypress click', function(e){
    if (e.which === 32 || e.type === 'click') {

    }
  });
 });

Инициировать событие при `клике` и `enter`

person Mihsak Yamato    schedule 23.10.2019

Вы можете напрямую вызвать функцию, используя событие onclick в div.

<div onclick='invokeAFuntion' id='div-element'></div>

Если вы хотите активировать функцию при нажатии пробела в любом месте экрана, используйте элемент документа в качестве селектора, в противном случае измените селектор в соответствии с элементом.

$(document).on('keypress',function(e) {
    if(e.which == 32) {
        alert('You pressed enter!');
    }
});

function invokeAFuntion(){
 alert('You have invoked the function!');
}
person Helper    schedule 23.10.2019

Мне удалось достичь цели, создав два отдельных события/функции, но функции делают одно и то же.

// If Button is Clicked
$('.button').click(function() { 
//do something
});

// If space bar is pressed
$(window).keypress(function (e) {
  if (e.keyCode === 32) {
    e.preventDefault()
//do same thing as if .button is clicked)
});
person Jeff    schedule 23.10.2019

Вы можете попробовать это, а также посмотреть живую демонстрацию здесь Нажмите здесь.

Примечание: вы можете обрабатывать globally любые click event и keypress event

$(document).ready(function(){
  $(document).on('keypress click','button,input,textarea', function(e){
    if (e.which === 32 || (e.type === 'click' && e.currentTarget.localName =="button")) {
     console.log("which "+ e.which);
      console.log("Type "+ e.type);
      $("#result").html(" which "+ e.which + " Type "+ e.type);
      console.log($(this));
      console.log(e);
      console.log(e.currentTarget.localName);
    }
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="form-group col-4" style="margin-bottom: 20px;">
 
  <input type="text"><br/>
  <button type="button">
  Click
  </button>
  <br/>
  <span id="result"></span>
</div>

Также проверьте обновленную ссылку на скрипку Нажмите здесь

person jishan siddique    schedule 23.10.2019
comment
Моя цель - сделать так, чтобы щелчок активировал функцию только при нажатии кнопки. Прямо сейчас, если я нажму в любом месте на странице, он активирует функции. Пробел работает... но щелчок должен работать, только если нажата $(.button), а не весь документ. Спасибо! - person Jeff; 23.10.2019
comment
Конечно, я сделаю только изменения On в селекторе документов - person jishan siddique; 23.10.2019