如何
  • 问题描述:

    对不起之间切换文本愚蠢的问题,但我不能算出它(初级)如何<li><a></a></li>

    我有一个UL列表中包含项目:

    <div id="some_list"> 
    <li ><a href="#">Hardware &ndash; HP Proliant DL145G2 AAA</a> 
    

    哪有我将OnClick AAA更改为BBB?

    我认为函数应该调用$(document).ready,但我不知道函数change_list中应该做什么。

    <script type="text/javascript"> 
    function change_list(aaa){ 
    ... 
    } 
    $(document).ready(function() { 
        $('#some_list li a').click(change_list); 
    }); 
    
    +1

    你在'div'和'li'之间有'ul'元素,对吗? – 2012-04-11 16:13:53

    这是function argument版本的.text()一个良好的使用:

    很多jQuery的功能
    $('#some_list li a').click(function() { 
        $(this).text(function(index, text) { 
         return text.replace('AAA', 'BBB'); 
        }); 
    }); 
    

    功能参数版本是特别适合于“读 - 修改 - 写”操作。

    他们避免需要编写不同的代码来阅读值,修改,然后值回DOM。

    另一种选择将是这个样子的:这个现在

    $('#some_list li a').click(function() { 
        var oldText = $(this).text(); 
        var newText = oldText.replace('AAA', 'BBB'); 
        $(this).text(newText); 
    }); 
    

    注意如何调用.text()两次 - 一次检索值,然后再写入新的价值。

    在这种情况下,节省的成本并不高,但是当您想修改属性或CSS值等内容时,该方法特别有用,因为它避免了大量的代码重复。

    函数参数方法的另一个优点是它允许您从DOM操作中分离逻辑。您可以编写仅关注修改字符串的简单修改函数,并让jQuery处理DOM操作。

    +0

    +1函数参数经常被忽略。 – 2012-04-11 16:15:07

    +0

    感谢您的回答,我玩过它并发现了一个问题。对于代码正常工作的_normal_ ASCII字符串。但是,如果应该替换的字符串是像_f.e._ ♠这样的html实体,那么它不会。 – 2012-04-12 11:02:40

    +0

    @Kris_R然后尝试使用'.html()'而不是'.text()'。 – Alnitak 2012-04-12 11:44:59