Javascript else if语句不起作用

时间:2013-08-12 18:13:13

标签: 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中的代码。取消代码永远不会执行!我做错了什么?

3 个答案:

答案 0 :(得分:9)

this是事件绑定的元素。它总是 <{em> #message,因此$("a", this)将始终是两个按钮。 .is会扫描两个按钮,看看其中是否包含"OK"。第一个就是,所以它总是进入第一个区块。

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

答案 1 :(得分:2)

检测来自a的{​​{1}}点击次数。 #message将成为点击的this

<a>

JSFIDDLE

答案 2 :(得分:1)

拳头,我注意到你的结尾div(</div>

好奇,为什么不做以下事情:

$("#OK").click (function() {
    console.log("im in OK!!");
});

$("#Cancel").click (function() {
    console.log("im in Cancel!!");
});

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

干杯。