1

我需要选择 div#request 的内容,而不是 .requestHeader 的内容。我应该使用哪个选择器?

<div id="request">
  <h3 class="requestHeader">
    Request Details
  </h3>
    Dear Human, In this life you're allowed to make only one request. Keep in mind! Even that request will never be resolved!!
    <br/>
      Request for Money&nbsp;
      75.00&nbsp;
      USD&nbsp;
      per day
</div>

我试过了div#request:not(.requestHeader)。它不起作用,并给出与div#request. 我错过了什么?

所需输出:(仅用于打印)

    Dear Human, In this life you're allowed to make only one request. Keep in mind! Even that request will never be resolved!!
    <br/>
      Request for Money&nbsp;
      75.00&nbsp;
      USD&nbsp;
      per day

我需要在没有链接的情况下执行此操作。即$('#request'):not('requestHeader')不能做。我只是有自由去做这件事$('SELECTOR-HERE')

4

5 回答 5

5
$('*','#request').not(".requestHeader")

查找元素内的所有元素#request,然后排除具有类的元素.requestHeader

您遇到的问题可能是#requestdiv 内没有其他元素,文本只是文本节点而不是元素,因此要选择目标 div 的内容,您可能需要使用andSelf()并且可能contents()取决于您的意图使用选择器,这是回答问题所需的关键部分,您是否打算仅替换文本或将其作为 DOM 元素进行交互等。

于 2012-08-04T10:59:04.723 回答
1
$('#request').not('.requestHeader')
于 2012-08-04T11:08:40.773 回答
0

如果您可以更改 HTML,我建议您在文本周围放置一个 span 元素。这将允许您轻松选择除 requestHeader 类之外的所有内容。

看到这个 jsFiddle http://jsfiddle.net/davew9999/gepga/

于 2012-08-04T11:26:09.087 回答
0

此 jQuery 将应用于 #request 元素中的所有元素,但具有 .requestHeader 类的元素除外。

$("#request *:not('.requestHeader')");
于 2014-03-25T07:32:32.287 回答
0

我看到的唯一方法是过滤文本节点的包装元素的内容。

var theText = $('#request').contents().filter(function() {
     // Text nodes only
    return this.nodeType === 3;
}).text();

// Trim leading and trailing white spaces
console.log($.trim(theText));   

见 JSFiddle:http: //jsfiddle.net/YNLwG/1/

于 2013-08-27T06:43:10.950 回答