0

我有以下内容:

<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!!");

我怎样才能解决这个问题?

4

4 回答 4

2

好的,有两种方法可以做到这一点:

.find(选择器)

 if(this).find("a").is(":contains(OK)")) {

    console.log("OK!!");

或者

$(选择器,上下文)

 if("a",this).is(":contains(OK)")) {

    console.log("OK!!");
于 2013-08-12T17:00:14.763 回答
1

在 javascript 中,this本质上是当前函数的上下文。在 jQuery 事件回调中, this设置为事件的源元素 - 而不是选择器字符串,这就是您对待它的方式。

相反,您想做如下测试:if($("a", this).is(":contains(OK)")) {

这是有效的,因为jQuery 选择器的第二个参数是要搜索的上下文,因此您只搜索a点击源元素下的标签。

于 2013-08-12T16:58:54.007 回答
1

将 click 元素绑定到 Div,然后检查 A 标签的文本字符串将使这两个事件在每次点击时发生。您想在每个 A 标记上绑定 2 个单独的点击事件。为每个 A 标签添加一个 ID,然后尝试此代码

$('#okLinkID').click(function(){
  console.log("OK!!");
});

$('#cancelLinkID').click(function(){
  console.log("Cancel!!");
});
于 2013-08-12T17:05:17.940 回答
1

//仅将一个侦听器附加到#message div,并侦听其中的任何“a”元素被单击。

$('a','#message').on('click',function(){
    var $this = $(this),
        btnText = $this.text();
    console.log(btnText); 
});

http://jsfiddle.net/YA7Ds/

于 2013-08-12T17:20:42.560 回答