Jquery选择第一个字母?

时间:2010-06-14 17:28:32

标签: javascript jquery html query-string

我只是试图让jquery识别一个段落的第一个字母。我该怎么做?

例如,我在页面上有一个包含多个paragrah的页面。我希望只有以指定字母开头的段落才能被赋予“当前”类,而其他所有段都被隐藏。我非常知道如何添加类并隐藏其他类,但是,我不能让jquery识别第一个字母。

其次,是否可以从网址字符串中提取此“首字母”变量?

例如, 第1页 - 有一个字母列表。用户点击“B”,网址为

http://domain.com/page2.html?letter=b

并且page2获取该变量(b)并将其应用于Jquery,仅显示那些段落

5 个答案:

答案 0 :(得分:21)

尝试:

jQuery('p').each(function(){     
    if(jQuery(this).text().substr(0,1).toUpperCase() == 'B'){
         jQuery(this).addClass('someclass')
    }
   })

您可以使用PHP清理变量并在JS中打印它:

<script type="text/javascript">
var letter = '<?php  echo (strlen($_GET['letter']) == 1) ? $_GET['letter'] : ''; ?>'
</script>

或者只需抓住document.location并将其解压缩。

答案 1 :(得分:12)

如果您想使用JavaScript从网址查询字符串中抓取letter,请在window.location.search上运行正则表达式:

var letterParam = window.location.search.match(/letter=([a-z])/i), letter;

if (letterParam)
{
    letter = letterParam[1];
}

要匹配以该字母开头的段落,请使用JavaScript字符串中的charAt()方法:

if (letter)
{
    $('p').each(function()
    {
        if ($(this).text().charAt(0).toUpperCase() == 'B')
        {
            // Apply the CSS class or change the style...
        }
    });
}

答案 2 :(得分:8)

隐藏文字不以字母<p>开头的B代码:

$('p').filter(function() {
  return $(this).text().charAt(0).toUpperCase() != 'B';
}).hide();

答案 3 :(得分:5)

$('p').hide().filter(function(){return $(this).text().match(/^b/i);}).show();

或缩进

$('p').hide()
      .filter(
              function(){
                         return $(this).text().match(/^b/i);
                        }
             )
      .show();
如果您希望区分大小写,请

删除匹配中的i

您可以查看http://jquery-howto.blogspot.com/2009/09/get-url-parameters-values-with-jquery.html如何获取网址参数..

答案 4 :(得分:3)

我不知道它是否与此相关,但我使用它来设置第一个字符的样式。

$(".menu ul li.page_item a").each(function() {
var text = $(this).html();
var first = $('<span>'+text.charAt(0)+'</span>').addClass('caps');
$(this).html(text.substring(1)).prepend(first);
});

喝彩!