出于好奇 - jQuery的用例/用例是triggerHandler什么?据我所知道的,唯一的"真实"之间的差异trigger,并triggerHandler为本地事件触发与否,和事件冒泡行为(虽然triggerHandler的冒泡的行为似乎并不很难用复制trigger的代码几行) .确保本机事件不会触发有什么好处?
我很好奇这是否是一个便利功能,或者它存在更深层次的原因,以及我何时/什么时候使用它.
jquery events javascript-events jquery-trigger jquery-triggerhandler
我用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的情况下触发这个?
重要提示:我需要知道事件类型和自定义数据
$('<span>test</span>')
.change(function(e){console.log(e.data);})
.triggerHandler('change',{foobar:1});
Run Code Online (Sandbox Code Playgroud)
我做错了还是被窃听了?
谢谢 ;)
我将一个单击事件添加到一个复选框,该复选框将根据其检查状态显示/隐藏其他字段.我希望处理程序在加载时触发以设置初始页面结构.由于某种原因,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) 我按下按键时尝试触发按钮的单击.我正在使用该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) 使用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中):
->关键字规划师
javascript jquery javascript-events jquery-trigger jquery-triggerhandler
我有以下代码
$(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().
我该怎么做错了?