我需要选择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
75.00
USD
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
75.00
USD
per day
我需要在没有链接的情况下这样做。即$('#request'):not('requestHeader')
只是没有办法。我可以自由地做这个$('SELECTOR-HERE')
答案 0 :(得分:4)
$('*','#request').not(".requestHeader")
查找#request
元素中的所有元素,然后排除类.requestHeader
的元素
你遇到的问题可能是#request
div中没有其他元素,文本只是文本节点而不是元素,所以要选择目标div的内容你可能需要使用andSelf()
和contents()
取决于你打算如何使用选择器,这是回答问题所需的关键部分,你打算只是替换文本或作为DOM元素与它交互等
答案 1 :(得分:1)
$('#request').not('.requestHeader')
答案 2 :(得分:0)
如果您可以更改HTML,我建议在文本周围添加span元素。这将允许您轻松选择除requestHeader类之外的所有内容。
请参阅此jsFiddle http://jsfiddle.net/davew9999/gepga/
答案 3 :(得分: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/
答案 4 :(得分:0)
此jQuery将应用于#request元素中的所有元素,但带有.requestHeader类的元素除外。
$("#request *:not('.requestHeader')");