标签: jquery-triggerhandler

触发器在jQuery中触发器与触发器

出于好奇 - jQuery的用例/用例是triggerHandler什么?据我所知道的,唯一的"真实"之间的差异trigger,并triggerHandler为本地事件触发与否,和事件冒泡行为(虽然triggerHandler的冒泡的行为似乎并不很难用复制trigger的代码几行) .确保本机事件不会触发有什么好处?

我很好奇这是否是一个便利功能,或者它存在更深层次的原因,以及我何时/什么时候使用它.

jquery events javascript-events jquery-trigger jquery-triggerhandler

29
推荐指数
1
解决办法
2万
查看次数

不使用jQuery触发自定义事件

我用jQuery触发了一些DOM事件 triggerHandler()

<!DOCTYPE html>
<html>
<head>
  <title>stackoverflow</title>
  <script src="http://ajax.googleapis.com:80/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
</head>

<body>
  <script>
    $(document).ready(function() {
      $(document).on('hey', function(customEvent, originalEvent, data) {
        console.log(customEvent.type + ' ' + data.user); // hey stackoverflow

      });

      // how to this in vanilla js
      $(document).triggerHandler('hey', [{}, {
        'user': 'stackoverflow'
      }])
    });
  </script>
</body>

</html>
Run Code Online (Sandbox Code Playgroud)

如何在没有jQuery的情况下触发这个?

重要提示:我需要知道事件类型和自定义数据

javascript jquery dom-events jquery-triggerhandler

16
推荐指数
1
解决办法
5148
查看次数

jQuery:从triggerHandler()接收extraParameters

   $('<span>test</span>')
    .change(function(e){console.log(e.data);})
    .triggerHandler('change',{foobar:1});
Run Code Online (Sandbox Code Playgroud)

我做错了还是被窃听了?

谢谢 ;)

jquery jquery-triggerhandler

9
推荐指数
1
解决办法
4089
查看次数

触发器时,jquery triggerHandler不起作用

我将一个单击事件添加到一个复选框,该复选框将根据其检查状态显示/隐藏其他字段.我希望处理程序在加载时触发以设置初始页面结构.由于某种原因,triggerHandler不在该领域工作.如果我将其更改为"触发",则处理程序将触发,但复选框状态也将更改.你能看出我做错了什么/为什么triggerHandler不起作用?

$('body').on("click", "#hdimage", function(){
    console.log('hd');
    if(!$('#hdimage').is(':checked')){
        $('.sd-dim').hide();
    } else {
        $('.sd-dim').show();
    }
});
$('#hdimage').triggerHandler('click');
Run Code Online (Sandbox Code Playgroud)

jquery event-handling jquery-trigger jquery-triggerhandler

8
推荐指数
1
解决办法
4220
查看次数

triggerHandler导致错误:[$ rootScope:inprog] $ apply已在进行中错误 - AngularJS

我按下按键时尝试触发按钮的单击.我正在使用该triggerHandler函数执行此操作,但这会导致上述错误.我想我必须创建某种循环引用/循环,但我看不到哪里.

这是我的HTML:

<button id="demoBtn1" hot-key-button hot-key="hotKeys.primaryTest" class="po-btn primary-btn" type="submit" ng-click="btnFunction()"></button>
Run Code Online (Sandbox Code Playgroud)

这是我的控制器:

.controller('BtnCtrl', function ($scope) {
    $scope.checkKeyPress = function ($event, hotKeyObj) {
        for(var key in hotKeyObj) {
            if($event.keyCode == hotKeyObj[key].keyCode) {
                var id = hotKeyObj[key].btnId;
                hotKeyObj[key].funcTriggered(id);
            }
        }
    }
    $scope.clickFunction = function(id) {
        var currentButton = angular.element(document.getElementById(id));
        currentButton.triggerHandler("click");
    }
    $scope.btnFunction = function() {
        console.log("clickFunction1 has been triggered");
    }

    $scope.hotKeys = {
        'primaryTest': {
            keyCode: 49,
            keyShortcut: "1",
            label: "Button",
            btnId: 'demoBtn1',
            funcTriggered: $scope.clickFunction
        },
        // more objects here
        } …
Run Code Online (Sandbox Code Playgroud)

onclick angularjs jquery-triggerhandler

4
推荐指数
1
解决办法
9050
查看次数

为什么jQuery triggerHandler()有效,但是trigger()没有?

使用triggerHandler()作品单击元素:

$element = $('#gwt-debug-location-pill-edit-div:visible');
$element.triggerHandler('click');
Run Code Online (Sandbox Code Playgroud)

但是,使用它来点击它trigger()不会:

$element.trigger('click');
Run Code Online (Sandbox Code Playgroud)

这是为什么?


要复制它(在Firefox和Chrome中):

  • 转到https://adwords.google.cn/select/home,然后使用您的凭据登录
  • 工具和分析->关键字规划师
  • 展开"输入或上传关键字以查看其效果"
  • 使用浏览器的控制台,尝试通过上面的两种方法单击位置框(在下面的屏幕截图中用红色标记)(你需要将jQuery注入页面.我使用jQuerify来做到这一点.)

在此输入图像描述

javascript jquery javascript-events jquery-trigger jquery-triggerhandler

2
推荐指数
1
解决办法
1474
查看次数

从$(document).ready()调用时未触发自定义事件;

我有以下代码

$(document).ready(function () {

    VerifyCustomerFilter();

    $("#ToDateStor").on("DateSet", function () {
       ...
    );

   function VerifyCustomerFilter() {
     if(toDate != "")     
       $("#ToDateStor").trigger('DateSet'); //This does not work
   }
}
Run Code Online (Sandbox Code Playgroud)

当我在函数'VerifyCustomerFilter()'中的条件为真时,无法触发我创建的自定义事件.

但是,当我在DatePicker的事件中触发事件时,它可以完美地工作:请参阅

 $("#calTo").datepicker({
      showButtonPanel: false,
      onClose: function (dateText, inst) {
          var ToDate = $(this).val().toString();
          $('#ToDateStor').html(ToDate).trigger('DateSet'); // This works!
      }
 });
Run Code Online (Sandbox Code Playgroud)

也已经尝试过使用了triggerHandler().

我该怎么做错了?

jquery custom-events jquery-trigger jquery-triggerhandler

0
推荐指数
1
解决办法
1237
查看次数