按下中键单击时停止Onclick执行 - javascript / jquery

时间:2016-06-22 21:05:36

标签: javascript jquery html onclick

这就像我的代码:

composer update

但是当按下中键时我想停止执行我的onclick事件。

2 个答案:

答案 0 :(得分:0)

这样的东西会在点击中间按钮时禁用onclick

$(document).mousedown(function(e) {
  if (e.which == 2) {
    e.preventDefault();
    alert("middle button");
    $('a').prop("onclick", null); // disable onclick
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<li class="dropdown" id="dropdown1"><a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown<b class="caret"></b></a>
  <ul class="dropdown-menu">
    <li id="li-1"><a href="#" onclick='alert("li-1")'>List1</a>
    </li>
    <li id="li-2"><a href="#" onclick='alert("li-2")'>List</a>
    </li>
  </ul>
</li>

答案 1 :(得分:0)

event.button的值分别为0,1,2,分别代表鼠标左键,中键和右键。知道这一点,您可以利用short circuit evaluation来完成工作。

(event.button !=1 ) && !alert('li-1')

基本相同
if(event.button != 1){
 return !alert('li-i') // true (just to make sure the event it sent)
return false;

如果鼠标中键未点击,则代码段中的第一个lialert(),如果未点击鼠标,则lialert() <li class="dropdown" id="dropdown1"><a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown<b class="caret"></b></a> <ul class="dropdown-menu"> <li id="li-1"><a href="#" onclick="(event.button!=1 ) && !alert('li-1')">List1</a> </li> <li id="li-2"><a href="#" onclick="(event.button!= 0 ) && !alert('li-2')">List2</a> </li> </ul> </li>用鼠标左键。

>>> from fractions import Fraction
>>> from math import ceil
>>> 
>>> def vdc(n, base=2):
    vdc, denom = 0,1
    while n:
        denom *= base
        n, remainder = divmod(n, base)
        vdc += remainder / denom
    return vdc

>>> [vdc(i) for i in range(5)]
[0, 0.5, 0.25, 0.75, 0.125]
>>> def van_der_corput_index(sequence):
    lenseq = len(sequence)
    if lenseq:
        lenseq1 = lenseq - 1
        yield lenseq1   # last element
        for i in range(lenseq1):
            yield ceil(vdc(Fraction(i)) * lenseq1)


>>> seq = list(range(23))
>>> seq
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22]
>>> list(van_der_corput_index(seq))
[22, 0, 11, 6, 17, 3, 14, 9, 20, 2, 13, 7, 18, 5, 16, 10, 21, 1, 12, 7, 18, 4, 15]
>>> len(set(van_der_corput_index(seq)))
21
>>> from collections import Counter
>>> 
>>> for listlen in (2, 3, 5, 7, 11, 13, 17, 19, 23,
        29, 31, 37, 41, 43, 47, 53, 59, 61,
        67, 71, 73, 79, 83, 89, 97, 1023,
        1024, 4095, 4096, 2**16 - 1, 2**16):
    out = list(van_der_corput_index( list(range(listlen) )))
    outcount = Counter(out)
    if outcount and outcount.most_common(1)[0][1] > 1:
        print("Duplicates in %i leaving %i unique nums." % (listlen, len(outcount)))
    outlen = len(out)
    if outlen != listlen:
        print("Length change in %i to %i" % (listlen, outlen))


Duplicates in 23 leaving 21 unique nums.
Duplicates in 43 leaving 37 unique nums.
Duplicates in 47 leaving 41 unique nums.
Duplicates in 53 leaving 49 unique nums.
Duplicates in 59 leaving 55 unique nums.
Duplicates in 71 leaving 67 unique nums.
Duplicates in 79 leaving 69 unique nums.
Duplicates in 83 leaving 71 unique nums.
Duplicates in 89 leaving 81 unique nums.
>>> outlen
65536
>>> listlen
65536
>>>