我只是试图让jquery识别一个段落的第一个字母。我该怎么做?
例如,我在页面上有一个包含多个paragrah的页面。我希望只有以指定字母开头的段落才能被赋予“当前”类,而其他所有段都被隐藏。我非常知道如何添加类并隐藏其他类,但是,我不能让jquery识别第一个字母。
其次,是否可以从网址字符串中提取此“首字母”变量?
例如, 第1页 - 有一个字母列表。用户点击“B”,网址为
http://domain.com/page2.html?letter=b
并且page2获取该变量(b)并将其应用于Jquery,仅显示那些段落
答案 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);
});
喝彩!