我有以下内容:
<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>
我想将click方法绑定到'div'元素,当单击其中一个子'a'元素时,请执行单独的操作。我试图使用按钮文本区分它们,但以下不起作用:
$(function(){
$('#message').click(function(){
if($(this + ">a").is(":contains(OK)")) {
console.log("OK!!");
我该如何解决这个问题?
答案 0 :(得分:2)
好的,有两种方法可以做到这一点:
if(this).find("a").is(":contains(OK)")) {
console.log("OK!!");
OR
if("a",this).is(":contains(OK)")) {
console.log("OK!!");
答案 1 :(得分:1)
在javascript中,this
本质上是当前函数的上下文。在jQuery事件回调中,this
被设置为事件的源元素 - 而不是选择器字符串,这就是您将其视为的内容。
相反,您希望进行如下测试:if($("a", this).is(":contains(OK)")) {
这是有效的,因为jQuery selector的第二个参数是要搜索的上下文,因此您只搜索点击源元素下的a
标记。
答案 2 :(得分:1)
将click元素绑定到Div,然后检查A标记的文本字符串将使每个点击都发生这两个事件。您希望在每个A标记上绑定2个单独的单击事件。为每个A标记添加ID,然后尝试此代码
$('#okLinkID').click(function(){
console.log("OK!!");
});
$('#cancelLinkID').click(function(){
console.log("Cancel!!");
});
答案 3 :(得分:1)
//只将一个侦听器附加到#message div并侦听其中的任何“a”元素。
$('a','#message').on('click',function(){
var $this = $(this),
btnText = $this.text();
console.log(btnText);
});