html - 除了 <button> 之外,还有哪些 <tag> 可以用来触发 AJAX?

标签 html css

我在下面有一个菜单:

<ul class="r1">
  <li class="lb"><button class="bu" value="orange">Orange</button></li>
  <li class="lb"><button class="bu" value="apple">Apple</button></li>
</ul>

我添加了 EventListener 脚本而不是链接:

<script>
var bs = document.getElementsByClassName("bu");
for(var i =0; i< bs.length; i++){
bs[i].addEventListener('click', function(){ sFunction(this.value);});
}
</script>

点击后会调用下面的ajax函数:

function sFunction(value) {
xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET","some.php?q="+value,true);
xmlhttp.send();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {document.getElementById("ajax").innerHTML = xmlhttp.responseText;}}}

这段代码运行良好。我相信这是因为“按钮”支持“li”不支持的 VALUE 属性。

现在,如果我不想使用“按钮”,是否可以使用任何其他标签/元素来替换“按钮”?

我的逻辑是我不想在我的菜单中使用按钮触发 ajax,因为该按钮将出现在列表菜单中。

有什么建议吗?

最佳答案

它可以是任何元素,如 div、span 等,但您唯一需要注意的是您的值将保存在哪里。

如果它是 button,你可以在 value 标签中使用它,例如,如果你使用 div,我们可以在自定义标签中使用它,例如这个,,

var bs = document.getElementsByClassName("bu");
for (var i = 0; i < bs.length; i++) {
  bs[i].addEventListener('click', function() {
    sFunction(this.getAttribute('data-value'));
  });
}
<div class="bu" data-value="42">Value</div>

所以请注意,不是将 this.value 传递给您的 ajax 函数,我们只是将其更改为

sFunction( this.getAttribute('data-value') );

希望对你有帮助

关于html - 除了 <button> 之外,还有哪些 <tag> 可以用来触发 AJAX?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47727065/

相关文章:

javascript - 更改数据表的列背景

javascript - li .sibling .fadeTo 问题与 jQuery

javascript - 在 anchor 中动态设置类不起作用?

javascript - 使用 Javascript 获取 URL 参数

jquery-ui:如何在选择菜单项(选项)中设置类名?

html - 令人困惑的表格 CSS

javascript - 如何控制 Angular-UI Bootstrap 弹出窗口的确切位置

html - 当高度约为 10 像素时,SVG 和输入标签会被微移

javascript - $(Element).outerWidth() 返回元素的 DOM 而不是宽度

Css 导航菜单悬停