代码示例:
<table>
<tr>
<td>
<input type="radio" name="SomeName" value="3" checked>
My String $10.00
</td>
</tr>
</table>
如何选择“My String $ 10.00”将其隐藏在客户端?
$('???').next().hide();
编辑:
上面的HTML是自动生成的......我无法控制它....
答案 0 :(得分:2)
$('input[name=SomeName]').parent().text();
如果您想要隐藏该文字,最好将其封装在段落,范围或标签中,这样您就可以执行以下操作:
$('input[name=SomeName]').parent().find('span').hide();
答案 1 :(得分:2)
jQuery不允许轻松访问文本节点。也许您可以将HTML更改为以下内容?
...
<input type="radio" id="myID"/>
<label for="myID">My String $10.00</label>
...
然后你可以这样做:
$("input[type=radio]").next().hide();
或者,如果你想让它工作,无论元素的顺序或其他任何东西:
$("input[type=radio]").closest("td").find("label").hide();
由于您编辑的帖子提及您无法控制HTML,请尝试以下几行:
// Tiny jQuery extension to provide $().outerHTML();
jQuery.fn.outerHTML = function() {
return $($('<div></div>').html(this.clone())).html();
}
var radioButton = $("input[type=radio]");
var parentElement = radioButton.parent();
var radioHTML = radioButton.outerHTML();
var hiddenText = radioButton.parent().text();
// Hide the text:
parentElement.html(radioHTML);
// Display the text again:
parentElement.html(radioHTML + hiddenText);
答案 2 :(得分:1)
由于您无法控制HTML,我将使用以下解决方案之一。
第一个解决方案:我认为你不能在jQuery中的文本节点上使用hide(),因为该函数只对元素进行操作(我在猜测)。但是这里有你如何删除文本。
$(document).ready(function() {
$("input[type='radio'][name='SomeName']").parent().contents().filter(function() { return this.nodeType != 1; }).remove();
});
您可以阅读有关内容()here的更多信息。
第二个解决方案:您可以在文本节点周围注入span元素并隐藏跨度。
var parent = $("input[type='radio'][name='SomeName']").parent();
parent.contents().filter(function() { return this.nodeType != 1; }).wrap("<span></span>");
parent.find("span").hide();
答案 3 :(得分:0)
但确实如此,您无法轻松访问文本节点以使用hide()。
Hack sol'n:尝试将所有内容读入var中,使用正则表达式删除标记后的所有内容,然后重新加载结果。
var chunk = $('input[name="SomeName"]').parent().html();
$('input[name="SomeName"]').parent().empty().append( chunk.replace(/(<[^>]+>).*/, '$1') );
或类似的东西(未经测试)