Div之后用Jquery更改文本

时间:2014-12-11 15:59:17

标签: javascript jquery html css

是否可以使用JQuery隐藏输入元素和输入后的文本?生成代码,因此我无法更改文本,将其包装在一个范围内或以任何方式更改它。

<label>Event Location <span class="req">*</span></label><br>
<input type="radio" name="a22" id="a22_0" value="Lafayette  LA">Lafayette LA<br>
<input type="radio" name="a22" id="a22_1" value="Houston TX">Houston TX<br>
<input type="radio" name="a22" id="a22_3" value="San Antonio TX">San Antonio TX

4 个答案:

答案 0 :(得分:1)

您需要迭代父元素(示例中的TD添加为答案),找到单选按钮后面的所有文本元素,然后将它们包装在隐藏的跨度中:

e.g。

JSFiddle: http://jsfiddle.net/TrueBlueAussie/6gzfLorp/3/

$('td').contents().each(function (e) {
    if (this.nodeType == 3 && $(this).prevAll(':radio').length) {
            $(this).wrap($('<span>').hide());
    }
});

注意:你的问题有点含糊不清,但从你的回答中可以看出你有TD,你可以隐藏TD的所有内容:

http://jsfiddle.net/TrueBlueAussie/6gzfLorp/7/

$('.set-cities td').each(function (e) {
    $(this).contents().wrapAll($('<span>').hide());
});

答案 1 :(得分:0)

它包含在td标签中。这就是我现在所拥有的:

$("label:contains('Event Location')").parent("td").wrap("<span class='set-cities'></span>");
$('.set-cities').empty();
$('.set-cities').append("<td><label>Event Location <span class='req'>*</span></label><br><input type='radio' name='aa2' id='aa2_1' value='Houston TX' checked='checked'>Houston TX<br></td>");

我只想更改整个文本块,而不仅仅是城市名称。

答案 2 :(得分:0)

如果您想直接替换文本节点,可以使用以下方法。我借鉴https://stackoverflow.com/a/298758/728393并根据您的情况量身定做

function replaceTextAfter(selector,newtext){
    var textnode = $(selector).parent().contents() // we need to contents as a collection
    .filter(function(){
        return this.nodeType == 3 && $(this).prev().is($(selector)); //return true if node is text and the previous node is our selector
    });
    textnode[0].data = newtext; //change the text
}

replaceTextAfter('#a22_0','abc');

http://jsfiddle.net/z606no23/

答案 3 :(得分:0)

在元素完成后删除所有文本,直到新标记为止 http://jsfiddle.net/alemarch/hm7ey6t5/

 function deleteElemPlusText( elem ) {
     var contestoHtml = $(elem).parent().html()
     var thisHtml = $(elem).get(0).outerHTML  // $(elem).outerHTML()
     var re = new RegExp(thisHtml + "([^<])*")
     var newContesto =  contestoHtml.replace(re, "")
     $(elem).parent().html(newContesto)
 }

function deleteAllElemsPlusText( toDelete ) {
   var x =  $(toDelete).length;
   for (var i = 0; i < x; i++) {
     deleteElemPlusText($(toDelete).eq(0))
   }
} 

deleteAllElemsPlusText( "input[type=radio]" )

注意:并非所有浏览器都具有outerHTML属性访问权限,但您可以使用此jquery插件http://www.darlesson.com/jquery/outerhtml/