Javascript else if 语句不起作用

标签 javascript jquery

我有以下内容:

HTML

<div class="tab-pane" id="message">
      <textarea rows="4" cols="50" id="send_message" placeholder="Enter text ...">  </textarea>
      <a href="#message" class="btn btn-large btn-info"  data-toggle="tab">OK</a>
      <a href="#message" class="btn btn-large btn-info"  data-toggle="tab">Cancel</a>

JavaScript

$('#message').click(function(){
    if($("a", this).is(":contains(OK)")) {
        console.log("im in OK!!");
    } else if($("a", this).is(":contains(Cancel)"))  {
        console.log("im in cancel!!");
    }
});

当我点击 OK 按钮并按预期执行时,这工作正常,但是当我点击取消时,OK 中的代码仅被执行。取消代码永远不会执行!我做错了什么?

最佳答案

this 是事件绑定(bind)到的元素。它是总是 #message,因此$("a", this) 将始终是两个按钮。 .is 将扫描两个按钮以查看它们是否包含 "OK"。第一个是,所以它总是转到第一个 block 。

您应该将事件绑定(bind)到按钮本身,而不是整个 div。

关于Javascript else if 语句不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18193801/

相关文章:

javascript - Handlebars.js - 在表达式中连接任意字符串

javascript - 尝试在 paper 日期选择器中设置日期超出最大调用堆栈

javascript - 从 charts.js 中删除工具提示

javascript - Firefox 和 MS 浏览器中 jquery 返回的数据项顺序不同

javascript - 从 AJAX 请求获取页面内容后,我可以选择标签元素,但无法选择正文元素

javascript - 当 watch 设置为 true 时,Webpack 运行不干净

javascript - Mootools 延迟问题

jquery - 奇怪的 z-index 在 safari 中带有 rotateY 但在 chrome 和 firefox 中没有

jQuery 更改图像 src 属性

jquery - Bootstrap 3 嵌套多轮播