Селектор / элемент вложенного элемента JQUERY

Мне нужен только автор 2 в розовом цвете, как мне добиться этого с помощью .not ($ element)?

то есть я хочу, чтобы только второй верхний элемент (author2) был розовым, оставляя позади первый верхний элемент (author1) в списке. Здесь у нас может быть несколько таких списков для разных типов. Для каждого типа я хочу, чтобы автор 2 в розовом

Я не хочу, чтобы цвета текста РОЛИ менялись

<!DOCTYPE html>
<html>

<head>
  <script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  <script>
    $(document).ready(function() {
      $("div  p").css("color", "blue");
      // I want only author 2 in pink, how do I achive this using .not($element) ?
      //$("div  p").css("color", "pink");
    });
  </script>
</head>

<body>

  <div>
    <div style = "border:1px solid black;padding:10px;">
      <p>Author1</p>
      <div style = "border:1px solid black;padding:10px;">
        <p>Role1</p>
      </div>
      <div style = "border:1px solid black;padding:10px;">
        <p>Role2</p>
      </div>
    </div>
    <div style = "border:1px solid black;padding:10px;">
      <p>Author2</p>
      <div style = "border:1px solid black;padding:10px;">
        <p>Role1</p>
      </div>
      <div style = "border:1px solid black;padding:10px;">
        <p>Role2</p>
      </div>
    </div>
    <button type = "button" class = "btn btn-link add">
      <span class = "glyphicon glyphicon-plus"></span>
      <span class = "controls-add-text"> Add another Author</span>
    </button>
  </div>

</body>

</html>

Этот HTML динамический? Почему вы не можете использовать идентификатор или класс для Author2?

Ali Shahbaz 26.09.2018 13:24

Это живой элемент (динамический)

nab 26.09.2018 13:25

Автор2 - это фиксированный текст или его можно изменить?

Ali Shahbaz 26.09.2018 13:28

Автор 2 - это имя настоящего автора. Это живой элемент (динамический), я добавил кнопку, при нажатии на нее в форму добавляются новые авторы.

nab 26.09.2018 13:31
Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
0
4
28
3

Ответы 3

Добавьте класс к этому элементу p, например

<div class = "repeater-wrapper">
    <div style = "border:1px solid black;padding:10px;">
        <p class = "author">Author1</p>
        <div style = "border:1px solid black;padding:10px;">
            <p>Role1</p>
        </div>
        <div style = "border:1px solid black;padding:10px;">
            <p>Role2</p>
        </div>
    </div>
    <div style = "border:1px solid black;padding:10px;">
        <p class = "author">Author2</p>
        <div style = "border:1px solid black;padding:10px;">
            <p>Role1</p>
        </div>
        <div style = "border:1px solid black;padding:10px;">
            <p>Role2</p>
        </div>
    </div>
</div>

Тогда ты можешь сделать

jQuery('.repeater-wrapper').each(function(){
        $(this).find( ".author:eq(1)" ).css("color","pink");
    });

Но я не могу, так как это живой элемент в форме, и это нужно сделать с помощью пути jquery (считая второй элемент в списке авторов)

nab 26.09.2018 13:28

Конечно, спасибо. Но что, если у меня нет класса .author? Это вложенный шаблон (форма), который снова используется для спонсоров, участников, связанных публикаций и т. д.?

nab 26.09.2018 13:40

@ наб. Проверьте этот обновленный ответ. Вы можете добавить класс к основному div, который повторяется. Как я добавил repeater-wrapper

Sudharshan Nair 26.09.2018 13:45

var $ divs = $ root.find ('p'). not ($ root.find ('p p')) // Я пытаюсь добиться чего-то подобного с помощью концепции xpath, не могли бы вы помочь? $ divs [2] .css ("цвет", "розовый")

nab 26.09.2018 13:47

@nab Но вы можете просто применить класс и сделать что-то проще, вместо того, чтобы усложнять

Sudharshan Nair 26.09.2018 13:52

Вы можете использовать тот же селектор, который вы используете, но затем вы можете определить, что из следующего вы хотите обработать. Например, если у каждого автора будут Role1 и Role2, это означает, что у вас будет 3

для автора.

$($("div p")[3]).css("color","pink")

Или вы также можете перейти к результатам и просто изменить тот, который хотите, например:

$("div p").each(function(i){
    if ($(this).html() == "Author2"){
        $(this).css("color","pink")
    }   
});

Другое решение - назначить класс каждому автору и взять второго. При этом не имеет значения, есть у них роль или нет.

<h2>What will $("div span") select?</h2>

<h4>This div element has two descendants, p and span:</h4>

<div>
    <div style = "border:1px solid black;padding:10px;">
        <p class = "Author">Author1</p>
        <div style = "border:1px solid black;padding:10px;">
            <p>Role1</p>
        </div>
        <div style = "border:1px solid black;padding:10px;">
            <p>Role2</p>
        </div>
    </div>
    <div style = "border:1px solid black;padding:10px;">
        <p class = "Author">Author2</p>
        <div style = "border:1px solid black;padding:10px;">
            <p>Role1</p>
        </div>
        <div style = "border:1px solid black;padding:10px;">
            <p>Role2</p>
        </div>
    </div>
</div>

Затем вы просто меняете цвет следующим образом:

$($(".Author")[1]).css("color","pink");

var $ divs = $ root.find ('p'). not ($ root.find ('p p')) // Я пытаюсь добиться чего-то подобного с помощью концепции xpath, не могли бы вы помочь? $ divs [2] .css ("цвет", "розовый")

nab 26.09.2018 13:47

$("p").parent("div").parent("div").eq(2).children("p:eq(0)").css("color", "pink")
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h2>What will $("div span") select?</h2>

<h4>This div element has two descendants, p and span:</h4>

<div>
    <div style = "border:1px solid black;padding:10px;">
        <p>Author1</p>
        <div style = "border:1px solid black;padding:10px;">
            <p>Role1</p>
        </div>
        <div style = "border:1px solid black;padding:10px;">
            <p>Role2</p>
        </div>
    </div>
    <div style = "border:1px solid black;padding:10px;">
        <p>Author2</p>
        <div style = "border:1px solid black;padding:10px;">
            <p>Role1</p>
        </div>
        <div style = "border:1px solid black;padding:10px;">
            <p>Role2</p>
        </div>
    </div>
</div>

var $ divs = $ root.find ('p'). not ($ root.find ('p p')) // Я пытаюсь добиться чего-то подобного с помощью концепции xpath, не могли бы вы помочь? $ divs [2] .css ("цвет", "розовый")

nab 26.09.2018 13:45
$("div:has(div>p):eq(2)").children("p:eq(0)") выберет Author2
Ali Shahbaz 26.09.2018 14:01

Другие вопросы по теме