2012-04-11 169 views
1

对不起之间切换文本愚蠢的问题,但我不能算出它(初级)如何<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

回答

2

这是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