我有以下内容:
<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>
$('#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中的代码。取消代码永远不会执行!我做错了什么?
答案 0 :(得分:9)
this
是事件绑定的元素。它总是 <{em> #message
,因此$("a", this)
将始终是两个按钮。 .is
会扫描两个按钮,看看其中是否包含"OK"
。第一个就是,所以它总是进入第一个区块。
您应该将事件绑定到按钮本身,而不是整个div。
答案 1 :(得分:2)
答案 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>
干杯。