确定当前在jquery中触发了哪个事件

时间:2015-11-20 12:23:31

标签: javascript jquery asp.net-mvc

如果我使用jquery获取多个事件,我如何确定当前触发了哪个事件,以便我可以进一步处理,例如

$("#someId").on('paste blur', function (e) {
   var data = '';
  // if paste
     data =  e.originalEvent.clipboardData.getData('text')
  // if blur
     data =  $("#someId").val();        
});

3 个答案:

答案 0 :(得分:2)

您可以使用event.type来获取当前事件

$("#someId").on('paste blur', function (e) {
    if ('paste' == e.type) {
        data = e.originalEvent.clipboardData.getData('text')
    } else if ('blur' == e.type) {
        data = $("#someId").val();
    }
});

答案 1 :(得分:2)

您可以使用Event.type

$("#someId").on('paste blur', function (e) {
  var data = '';
  if(e.type == 'paste') {
    data =  e.originalEvent.clipboardData.getData('text')
  }

  if(e.type == 'blur') {
    data =  $("#someId").val();        
  }
});

您可能希望考虑注册单独的处理程序,具体取决于您将如何处理事件。

答案 2 :(得分:2)

为避免不必要的条件,您只能添加实际需要的事件:

// Bind up a couple of event handlers
$("#txt").on({
  click: function() {
    console.log("click")
  },
  mouseout: function() {
    console.log("mouseout")
  },
  change: function() {
    console.log("change")
  }
});

//Lookup events for this particular Element
//prints out an object with all events on that element
console.log($._data($("#txt")[0], "events"));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="txt" />