jQuery находит следующие/предыдущие элементы определенного класса, но не обязательно одноуровневых элементов

Ну, один путь состоит в том, чтобы скомпилировать его как x64 с VS2008

, который Это выполняет, как Вы ожидали бы:

int normalInt = 5; 
unsigned long long int num=285212672;
printf(
    "My number is %d bytes wide and its value is %ul. 
    A normal number is %d \n", 
    sizeof(num), 
    num, 
    normalInt);

Для кода на 32 бита, мы должны использовать корректное __ int64 спецификатор формата %I64u. Таким образом, это становится.

int normalInt = 5; 
unsigned __int64 num=285212672;
printf(
    "My number is %d bytes wide and its value is %I64u. 
    A normal number is %d", 
    sizeof(num),
    num, normalInt);

Этот код работает на оба компилятора VS на 32 и 64 бита.

16
задан Keavon 20 May 2014 в 04:41
поделиться

3 ответа

Следующее выражение должно (за исключением синтаксических ошибок!) Найти всех братьев и сестер родителя, которые содержат p.find , а затем найдите эти элементы p.find и измените их цвет на синий.

$(this).parent().nextAll(":has(p.find)").find(".find").css('background-color','blue');

Конечно, если структура вашей страницы такова, что p.find ] встречается на совершенно другом уровне иерархии (например, брат или сестра бабушки и дедушки), это не сработает.

0
ответ дан 30 November 2019 в 21:45
поделиться

Я думаю, что единственный способ решить эту проблему - выполнить рекурсивный поиск по элементы после текущего элемента. JQuery не предлагает простого решения этой проблемы. Если вы хотите найти элементы только среди братьев и сестер родительского элемента (как в вашем примере), не требуется выполнять рекурсивный поиск, но вам нужно выполнить несколько поисков.

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

<script type="text/javascript" charset="utf-8">
    $(function () {
        $('#click').click(function() {
            var parent = $(this);
            alert(parent);
            do {
                $(parent).find('.find').css('background-color','red'); 
                parent = $(parent).parent();
            } while(parent !== false);
        });
    });
</script>
0
ответ дан 30 November 2019 в 21:45
поделиться

Мое решение потребует немного изменить разметку, чтобы упростить jQuery. Если это невозможно или непривлекательный ответ, пожалуйста, не обращайте внимания!

Я бы обернул «родительскую» оболочку вокруг того, что вы хотите сделать ...

<div class="find-wrapper">
    <div><span id="click">hello</span></div>
    <div><p class="find">world></p></div>
</div>

Теперь, чтобы найти найти :

$(function() {
    $('#click').click(function() {
        var $target = $(this).closest('.find-wrapper').find('.find');
        // do something with $target...
    });
});

Это дает вам гибкость в использовании любой разметки и иерархии, которые вы хотите использовать в предложенной мной оболочке, и при этом надежно находить свою цель.

Удачи!

3
ответ дан 30 November 2019 в 21:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: