В jquery: Использовать значение attr ("class") в качестве селектора? - PullRequest
0 голосов
/ 04 ноября 2010

У меня есть поля с несколькими классами. Я хочу использовать один из этих классов в качестве селектора, как мне это сделать?

общий пример:

<input id="from"/><div class="error from">errormessage</div>
<input id="to"/>
<div><input id="when" /></div><div class="error when">errormessage</div>

Поскольку это div.error с классом from, я хочу добавить определенный класс для input # from, и то же самое относится и к входу, вызываемому когда Обратите внимание, что «когда» заключено в div. Несколько вариантов, как это необходимо для страницы. Поэтому обход деревьев не является подходящим решением.

Ответы [ 2 ]

7 голосов
/ 04 ноября 2010

Для уточненного вопроса:

Я думаю это то, что вы ищете, так как элемент с тех пор, чтобы быть предыдущим братом или содержится в одном:

$(".error").prev().find("input").andSelf().filter("input").addClass("test");

Вы можете проверить это здесь .


Для предыдущего вопроса: Используйте селектор .class , например:

$(".myCass")

Вы также можете выбрать элементы, которые имеют только множественные классы, приковав их цепочкой, например:

$(".myCass.myClass2.myClass3")

Выбирает только те элементы, которые имеют все 3 классов.

0 голосов
/ 04 ноября 2010

Селекторы jQuery - это не что иное, как строки, атрибуты HTML - это не что иное, как строки, а в обычном JavaScript есть строковые операторы и функции.

Вот небольшой (и бессмысленный) фрагмент кода, который объединяет эти идеи:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css"><!--
--></style>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript"><!--
jQuery(function($){
    $("div").css({border: "1px solid black"}).each(function(){
        var classes = this.className.split(/\s+/);
        for(var i=0, len=classes.length; i<len; i++){
            $("." + classes[i]).append("<p>I have class " + classes[i] + "</p>");
        }
    });
});
//--></script>
</head>
<body>


<div class="foo bar dot">foo bar dot</div>
<div class="bar dot">bar dot</div>
<div class="dot">dot</div>


</body>
</html>

Это хорошо, как доказательство концепции, но вы должны еще раз проверить, что ваш дизайн является самым простым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...