如何使用jsdoc表明@param是MouseEvent?HTMLElement DIV呢?
/**
* @param {MouseEvent} e
*/
window.clickToButton = function(e)
{
console.dir(e);
}
/**
* @param {HTMLElement} d
*/
window.clickToDiv = function(d)
{
console.dir(d);
}
如何使用jsdoc表明@param是MouseEvent?HTMLElement DIV呢?
/**
* @param {MouseEvent} e
*/
window.clickToButton = function(e)
{
console.dir(e);
}
/**
* @param {HTMLElement} d
*/
window.clickToDiv = function(d)
{
console.dir(d);
}
@event
标记来记录正确的事件类型,因为它与其他事件相关的标记(如@fires
和@listens
)集成在一起,而@typedef
则没有。根据您想要的详细程度,甚至可以为它们命名空间。以下是基础知识 - 我将像您使用jQuery一样编写代码,以使代码更简单。
/**
* @namespace document
*/
/**
* @namespace root.events.mouse
*/
但为了讨论方便,我们将仅使用document
。
鼠标事件有很多属性,但你只需要记录你关心的那些。这里有一个通用的typedef,叫做mouseEventParams
,它定义了处理jQuery事件时最常用的一些属性:
/**
* @typedef {{
* target: element,
* which: number,
* pageX: number,
* pageY: number,
* clientX: number
* clientY: number
* }} mouseEventParams
*/
/**
* Mousedown Event
* @event document#mousedown
* @type {mouseEventParams}
*/
/**
* Mouseup Event
* @event document#mouseup
* @type {mouseEventParams}
*/
/**
* Mousedown Event
* @event document#mousedown
* @type {object}
* @property {element} target
* @property {number} which
*/
/**
* Mouseup Event
* @event document#mouseup
* @type {object}
* @property {number} pageX
* @property {number} pageY
* @property {number} clientX
* @property {number} clientY
*/
如果您想在另一个doclet中引用事件,需要注意JSDoc会自动在每个事件名称前面添加字符串event:
,作为一种专门用于事件的命名空间。这意味着您需要在从其他doclets引用事件时包含该“命名空间”,但在@fires
和@listens
的情况下除外,因为event:
命名空间是隐含的。
// Notice the inclusion of 'event:' between '#' and 'mousedown' on `@param`
// But you don't need it on 'listens'
/**
* Handles mousedown events
* @param {document#event:mousedown} event
* @listens document#mousedown
*/
var someMouseHandler = function (event) {
console.log("mousedown event: ", e);
}
// Again, you don't need to include 'event:' for the `@fires` tag
/**
* Triggers a mouseUp event
* @param {element} element
* @fires document#mouseup
*/
var triggerMouseUp = function (element) {
$(element).trigger('mouseup');
}
/**
* @typedef {object} MouseEvent
* @typedef {object} HTMLElement
*/
/**
* @param {MouseEvent} e
*/
window.clickToButton = function(e) {
console.dir(e);
}
/**
* @param {HTMLElement} d
*/
window.clickToDiv = function(d) {
console.dir(d);
}