1

我有基于 id 属性的工作脚本。由于我有很多问题,决定使用 jQuery 的类属性。但是我使用以下脚本没有成功(我不擅长编写脚本:()

如果您的专家能建议我更好的方法,那就太好了。我有 300 多个单词可以用符号替换(大约 200 页)。

多谢。

HTML 代码

 <script src="http://code.jquery.com/jquery-latest.js"></script>

 <input type="submit" name="replace" id="replace" value="Replace" />
 <div class="my_div">Default content</div>
 <div class="my_div">Default content 2</div>

脚本

$('#replace').click(function() {
     var str=document.getElementByClassName("my_div").innerHTML;
     var n=str.replace("default","somesymbol");
     var n=str.replace("content","somesymbol");
     var n=str.replace("im","somesymbol");
     document.getElementByClassName("my_div").innerHTML=n;
    }
4

2 回答 2

2

改用这样的东西:

$('#replace').click(function() {
    $('.my_div').each(function() {
        var $this = $(this);
        var html = $this.html();

        $this.html(html.replace(/default|content|im/gi, 'somesymbol'));
    });
}​);​

getElementByClassName应该是,它返回一个你必须迭代的。getElementsByClassNameNodeList

此外,如果您不需要在替换中保留格式(如foo <b>bar</b>),请使用.text()而不是.html().

于 2012-10-27T22:05:36.437 回答
0

如果您使用函数作为参数,则使用 jQueryhtml()方法,它将遍历具有类名的整个元素集合,自动让您访问现有的 html 并在您返回 html 字符串时替换它

$('#replace').click(function() {
    $('.my_div').html(function( idx, oldHtml){
    /* if you need access to other properties or attributes of element -"this" or "$(this)" within this function*/
           return oldHtml.replace(/default|content|im/gi, 'somesymbol');
    });
});

参考:http ://api.jquery.com/html/

向下看 API 页面到 jQuery 版本 1.4 中添加的部分

于 2012-10-27T22:32:49.153 回答