Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何选择相对于';这';在javascript中_Javascript_Jquery - Fatal编程技术网

如何选择相对于';这';在javascript中

如何选择相对于';这';在javascript中,javascript,jquery,Javascript,Jquery,我有以下资料: <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>

我有以下资料:

<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中,
这本质上是当前函数的上下文。在jQuery事件回调中,
被设置为事件的源元素,而不是选择器字符串,您将其视为选择器字符串

相反,您希望执行如下测试:
if($(“a”,this).is(“:contains(OK)”){


这是因为的第二个参数是要搜索的上下文,所以您只搜索click的源元素下的
a
标记。

在javascript中,
基本上是当前函数的上下文。在jQuery事件回调中,
被设置为事件-不是选择器字符串,您将其视为选择器字符串

相反,您希望执行如下测试:
if($(“a”,this).is(“:contains(OK)”){


这是因为的第二个参数是要搜索的上下文,因此您只搜索单击的源元素下的
a
标记。

好的,有两种方法:

.查找(选择器) 或

$(选择器,上下文)
好的,有两种方法:

.查找(选择器) 或

$(选择器,上下文)
将click元素绑定到Div,然后检查A标记的文本字符串将使每次单击都发生这两个事件。您希望在每个A标记上绑定两个单独的click事件。为每个A标记添加一个ID,然后重试此代码

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

$('#cancelLinkID').click(function(){
  console.log("Cancel!!");
});

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

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

$('#cancelLinkID').click(function(){
  console.log("Cancel!!");
});

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

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

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

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

您希望
this+'>a'
具体做什么?将对象与字符串连接将调用对象上的
toString()
,这将导致字符串
'[对象]>a'
。您可能已经尝试过了。为什么要将单击事件绑定到div?为什么不将两个单独的单击事件绑定到a元素?为什么不为每个锚连接事件侦听器?我假设它包含div消息,所以我认为$(this+“>a”)可能会选择div#message的子元素,即“a”David Thomas。我认为您的方法不受欢迎。您希望
this+'>a'
具体做什么?将对象与字符串连接将调用对象上的
toString()
,这将导致字符串
“[object object]>a'
。您可能已经尝试过了。为什么要将单击事件绑定到div?为什么不将两个单独的单击事件绑定到a元素?为什么不为每个锚连接事件侦听器?我假设它包含div消息,所以我认为$(this+“>a”)可能会选择div#message的子元素,即“a”David Thomas。我认为您的方法不受欢迎。您也可以使用.closest(),如果需要,还可以使用.child(),.next()等来选择与单击的元素相关的元素。只需更新我以前的注释,就没有子元素()选择器,而不是.children()选择器和:nth-child()选择器。您还可以使用.closest(),如果需要,还可以使用.child()、.next()等来选择与单击的元素相关的元素。只是对我以前的注释进行更新,没有child()选择器,而是.children()选择器和:nth-child()选择器。
$('a','#message').on('click',function(){
    var $this = $(this),
        btnText = $this.text();
    console.log(btnText); 
});