它的作用如何? target = $ this.attr('data-target')|| e.preventDefault()||

时间:2012-03-29 20:35:35

标签: javascript

我有一些例子

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()与||一起使用经营者?

它是如何工作的?

2 个答案:

答案 0 :(得分:1)

执行以下操作: 根据一些评论,重访的答案完全不同(在某种意义上:)) 那么如果被点击的元素dataTarget具有一个值(在这种情况下假设该元素不是具有导航点击事件的锚来取消),那么它的作用就是该值用于导航,否则该元素必须是锚点,必须首先取消,然后使用其href属性的值。

简洁? :)

我原来读到的是: 如果事件目标具有dataTarget属性,则取消单击事件气泡,如果clicktarget指定了href属性,则浏览器在那里导航。这里的概念是从左到右的评估逻辑与实际的副作用方法执行相结合。

虽然简洁,但这种链式写作并不是真正有益的。 preventDefault存在,因为这种方式对它的调用是链接的,不需要代码块。

答案 1 :(得分:0)

||如果左侧的表达式为TRUE,则运算符不会计算右侧的表达式。