0
<ul id="ulclass">
    <li><a href="#">AAA</a></li>
    <li><a href="#">BBB</a></li>
    <li><a href="#">CCC</a></li>
</ul>

var textBoxValue = //value from textbox
$("ul#ulclass").find('li').filter(function() 
{
    if($(this).find("a").val() == textBoxValue)
        return true;
    else
        return false;
}).css('background-color', 'red'); //optional

我基本上是在尝试制作一个基本的自动完成功能。用户写入"A"文本框,jQuery 过滤每个href text之间<a></a>匹配,响应与自定义 css 样式,但它是可选的。

我在过滤它们时被卡住了。filter功能必须固定。

任何帮助,将不胜感激。

4

4 回答 4

4

.val()用于表单输入;锚点没有值,但它们有.text(). 尽管我可以建议一些样式改进,但有关代码的其他所有内容看起来都应该可以工作:

var textBoxValue = /* value from textbox */;
$("#ulclass").find('li').filter(function() 
{
    return $(this).find("a").text() === textBoxValue;
}).css('background-color', 'red');

请注意,在检查是否相等时,您可能需要$.trim()这些值,以防 HTML 或用户提供的字符串中存在额外的空白。

于 2013-02-08T18:03:25.473 回答
1

基本示例:

var $rows = $('#ulclass li');
$('#search').keyup(function() {
    var val = $.trim($(this).val()).replace(/ +/g, ' ').toLowerCase();
    $rows.removeClass('active').filter(function() {
        var text = $(this).text().replace(/\s+/g, ' ').toLowerCase();
        return val && !!~text.indexOf(val);
    }).addClass('active');
});

在行动:http: //jsfiddle.net/QkMHB/1/

于 2013-02-08T18:06:03.987 回答
0

改变这个 -

if($(this).find("a").val() == textBoxValue)

对此——

if($(this).find("a").text() == textBoxValue)

锚标记没有值。

于 2013-02-08T18:04:39.650 回答
0
<ul id="ulclass">
    <li><a href="#">AAA</a></li>
    <li><a href="#">BBB</a></li>
    <li><a href="#">CCC</a></li>
</ul>

var textBoxValue = //value from textbox
$("#ulclass").find('li').filter(function() 
{
    return $(this).find('a').text().toLowerCase()==textBoxValue.toLowerCase();
}).css('background-color', 'red');

如果您想要区分大小写,请删除 toLowerCase。另外,您可以直接使用 id ,因为它们是唯一的。

于 2013-02-08T18:04:56.187 回答