Ответ 1
Используя функцию фильтра, вы можете фильтровать на основе любых критериев, которые вы хотите:
var spans = $("span").filter(function(idx) {
return this.innerHTML.indexOf(myString) == 0;
});
Я знаю, что вы можете использовать: contains для получения элементов, которые innerHTML содержат определенную строку, но как я могу получить элементы, чей innerHTML начинается со строки?
Используя функцию фильтра, вы можете фильтровать на основе любых критериев, которые вы хотите:
var spans = $("span").filter(function(idx) {
return this.innerHTML.indexOf(myString) == 0;
});
Я знаю, что это старо, но если кто-то ищет лучший ответ, jQuery, поскольку v1.1.4 имеет ": содержит (" текст ")" селектор.
Пример HTML:
<p>Please reply above this line...</p>
Пример jQuery выбирает выше HTML:
$('p:contains("Please reply above this line")');
Метод фильтра позволит вам сравнить содержимое элемента, а затем вы можете делать все, что захотите (в этом случае я сделал addClass('selected')
).
$('p').filter(function() {
var searchString = 'Blue';
return ($(this).html().substring(0, searchString.length) == searchString);
}).addClass('selected');
Демо:
Вы можете сделать что-то вроде этого:
<!doctype HTML>
<html>
<head>
<script type = "text/javascript" language = "JavaScript" src = "jquery-1.4.2.min.js"></script>
<script type = "text/javascript" language = "JavaScript">
var elems;
$(document).ready(function(){
$("div").each(function(){
var content = $(this).html();
if (content.match(/asdf/)){
alert(content);
}
});
});
</script>
</head>
<body>
<div>asdfaowhguiwehgiuh</div>
<div>asdfaowhguiwehgiuh</div>
<div>fdsaaowhguiwehgiuh</div>
<div>fdsaaowhguiwehgiuh</div>
<div>fdsaaowhguiwehgiuh</div>
<div>asdfaowhguiwehgiuh</div>
</body>
</html>
Чтобы узнать, находится ли это в содержимом вообще. Если вы хотите, чтобы первые несколько символов вам нужно разделить содержимое на эти символы и проверить только его.