有一段html字符串<div class="menu"><img src="img/1.png">Book<img class="tip" src="image/tip.png"></div>
请问用jquery有没有什么办法把Book替换为别的字符串?

解决方案 »

  1.   


    <!DOCTYPE HTML>
    <html>
    <head>
    <meta charset="gb2312" />
    <title></title>
    <script src="http://code.jquery.com/jquery-latest.js"></script>
    <style>

    </style>
    </head>
    <body>
    <div class="menu"><img src="img/1.png">Book<img class="tip" src="image/tip.png"></div>
    <script>

    $('.menu').html(function(){
    return $(this).html().replace('Book', 123);
    })
    </script>
    </body>
    </html>
      

  2.   

    有没有办法定位Book吗?这个方法跟我的差不多,但是有两个不好的地方
    1. 字符串不是固定的,所以不能写死了,可以使Book,也可以是别的
    2. img上都绑定了事件,这么一来就要重新绑定一遍了
      

  3.   

    $("div.menu > img").html("mystring");
      

  4.   

    jQuery是做不了这个,Book是TextNode在jQuery查找Dom元素时直接被pass掉,所以找不到这个Node,
    可以使用浏览器的方法修改String.prototype['trim'] = function(){
    return this.replace(/^\s*|\s*$/g,'');
    };
    function replaceBook(){
    var $d = $('div.menu'), d = $d.get(0);
    var nodes = d.childNodes;
    for(var i=0; i<nodes.length; i++){
    var node = nodes.item(i);
    if(node.nodeType==3){
    if(node.nodeValue.trim() == 'Book'){
    node.nodeValue = "replace Book!";
    }
    }
    }
    }
      

  5.   

    好吧,你img居然不加结束标签,我还以为你要更改img里面的内容。。
    你可以试下下面的代码
    <!DOCTYPE HTML>
    <html>
    <head>
    <script src="jquery.js"></script>
    </head>
    <body>
    <div class="menu">
    <img src="img/1.png" />
    Book
    <img class="tip" src="image/tip.png"/></div>
    <script>
    function changeText(el, str){
    $(el).contents().each(function(){
    if(this.nodeType === 3 && /\S+/.test(this.nodeValue)){
    this.nodeValue = this.nodeValue.replace(/^(\s*)[\s\S]+?(\s*)$/, "$1" + str + "$2");
    }
    });
    }
    changeText($("div.menu"), "mystring");
    </script>
    </body>
    </html>