【发布时间】:2018-06-16 07:26:59
【问题描述】:
我知道这个问题已经被问过很多次了,但是,就我而言,似乎没有一个解决方案有效。因此请求。
我正在使用以下脚本:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<script src="modernizr.js"></script>
<script src="sly.min.js"></script>
通过 PHP 脚本,我生成了 UL Li。
echo '<p>MATCH FOLDERS</p>';
echo '<ul id="matchListUL" name="matchListUL">';
while($matdata = $matRes->fetch_assoc()) {
echo '<li style="list-style:none" onclick="matchName(this)" id="matchList" name="matchList" value="'.implode('; ', $matdata).'" ><a id="matList" href="'.implode('; ', $matdata).'">'.implode('; ', $matdata).'</a></li>';
}
echo '</ul>'
在li 中,我包含了onclick="matchName(this)"。通过下面的 javascript 代码,我试图阻止默认
function matchName(elm) {
var match = elm.getAttribute('value');
elm.preventDefault();
return false;
}
我尝试了上述的各种组合,包括添加addEventListener 和preventDefault,将onclick 事件从li 移动到a 标记,在li 标记本身中添加return false。似乎没有任何工作。我正在Firefox和chrome上对此进行测试。
我不确定jquery、sly 或modernizr 是否与 preventDefault() 冲突。当我运行w3schools 中给出的演示代码时,它可以完美运行。
【问题讨论】:
-
据我所知,阻止默认值适用于事件,而不是元素。
-
不要使用锚点。使用按钮。
标签: javascript html preventdefault