如何使用Jquery在单选按钮后选择一个字符串?

时间:2009-06-19 18:42:41

标签: jquery

代码示例:

<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是自动生成的......我无法控制它....

4 个答案:

答案 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)

他说他无法控制HTML。

但确实如此,您无法轻松访问文本节点以使用hide()。

Hack sol'n:尝试将所有内容读入var中,使用正则表达式删除标记后的所有内容,然后重新加载结果。

var chunk = $('input[name="SomeName"]').parent().html();
$('input[name="SomeName"]').parent().empty().append( chunk.replace(/(<[^>]+>).*/, '$1') );

或类似的东西(未经测试)