如果我将一个选择器作为参数传递给函数.
// selector is an object
function(selector) {
selector.trigger('eventHere');
}
显然,如果传入的选择器没有此事件,事件将永远不会触发,但是我应该在触发事件之前进行一些条件检查吗?我的意思是:
// selector is an object
if(selector === 'matched'){
// then fire the event
}
else{
// do nothing
}
或者只是离开它……?
最佳答案
关于jQuery的好处是,如果选择器不匹配,它不会抛出异常或导致错误.所以你不需要做任何额外的事情;这是一个安全的操作:
原文链接:https://www.f2er.com/jquery/428898.html// selector **must** be a jQuery object
// the assumption here is that you've already done
// var selector = $('selectorString'); elsewhere
// and have invoked this function with selector
function(selector){
selector.trigger('eventHere');
}
但请注意,您必须确保选择器是一个jQuery对象!否则,您可能会收到错误消息,指示触发器不是函数.
编辑
Adam Terlson在评论中指出“如果jquery对象在执行针对它的函数之前为null或者长度为0,则值得测试.仅仅因为它不会抛出错误并不意味着性能不能通过不首先执行它获得(jQuery仍在尝试).“
还有一个jsperf测试表明,每种技术的操作/秒都有明显的差异(这不是时间!最初让我失望) – 在调用函数vs.之前检查null / 0-length jQuery对象只需调用该函数.