我有一些例子
target = $this.attr('data-target') || e.preventDefault() || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')
但我不明白它是如何运作的(
如果我使用console.log()
console.log(target, e.preventDefault(), (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
我得到了
#collapseTwo undefined #collapseTwo
是的,我知道e.preventDefault()返回结果 - “垃圾”...但是为什么e.preventDefault()与||一起使用经营者?
它是如何工作的?
答案 0 :(得分:1)
执行以下操作: 根据一些评论,重访的答案完全不同(在某种意义上:)) 那么如果被点击的元素dataTarget具有一个值(在这种情况下假设该元素不是具有导航点击事件的锚来取消),那么它的作用就是该值用于导航,否则该元素必须是锚点,必须首先取消,然后使用其href属性的值。
简洁? :)
我原来读到的是: 如果事件目标具有dataTarget属性,则取消单击事件气泡,如果clicktarget指定了href属性,则浏览器在那里导航。这里的概念是从左到右的评估逻辑与实际的副作用方法执行相结合。
虽然简洁,但这种链式写作并不是真正有益的。 preventDefault存在,因为这种方式对它的调用是链接的,不需要代码块。
答案 1 :(得分:0)
||如果左侧的表达式为TRUE,则运算符不会计算右侧的表达式。