Проверка Jquery, если класс существует в одном из нескольких элементов - PullRequest
0 голосов
/ 23 января 2012

Как проверить, есть ли класс в одном из множества li элементов, если это так, вызвать функцию?

Существует несколько <div class="selectbox"/> во вложенных списках <input type="hidden"/> и <ul />. Мне нужно проверить, есть ли внутри каждого .selectbox ul один из множества li a элементов со связанным классом .selected. Если это так, передайте его значение в <input type="hidden"/> атрибут value.

Вот код:

<div id="selectbox1" class="selectbox">
    <input type="hidden" name="selectbox1" />
    <ul>
        <li><a href="#" name="value01">Option 01</a></li>
        <li><a href="#" name="value02">Option 02</a></li>
        <li><a href="#" name="value03" class="selected">Option 03</a></li>
        <li><a href="#" name="value04">Option 04</a></li>
        <li><a href="#" name="value05">Option 05</a></li>
    </ul>
</div>

Спасибо всем вам, ребята, я выбрал самое низкое время отклика мс.

Ответы [ 4 ]

3 голосов
/ 23 января 2012

Это должно сделать это:

$('.selectbox').each(function(){
   var $selected = $('a.selected',$(this));
    if($selected.length){
         $('input',$(this)).val($selected.text()); 
    }
});

Живой пример (со скрытым измененным текстом для демонстрационной цели): http://jsfiddle.net/YL4AB/
Живой пример 2 (показаны несколько .selectbox делений): http://jsfiddle.net/YL4AB/1/

1 голос
/ 23 января 2012

Я бы сделал это, получив набор всех элементов input в поле "selectbox" div, а затем найдя выбранный a (если есть).Например:

$(".selectbox > input").each(function() {
    this.value = $(this).closest(".selectbox").find("a.selected").first().attr("name") || "";
});

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

0 голосов
/ 23 января 2012

Вот некоторый код, объясняющий, что он делает:

// Grab the selectbox elements
$('.selectbox').each(function() {
    // Loop through the LI elements which have Anchor elements with the '.selected' class
    $(this).find('li a.selected').each(function() {
        // Execute arbitrary function
        alert($(this).text());
    });
});

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

0 голосов
/ 23 января 2012
$('input[name="selectbox1"]').val($("#selectbox1 li > a.selected").text());
...