Nano Hash - криптовалюты, майнинг, программирование

jquery найти значение выбранного элемента в раскрывающемся списке с изюминкой

У меня есть раскрывающийся список, отображающий значения в теге выбора, который я обычно просто использую $('#ID').val() для получения значения, но идентификатор либо неизвестен, либо динамически добавленная строка.

После закрывающего тега выбора у меня есть значок пользовательского интерфейса jquery, который я использую, при нажатии на который будет зафиксировано значение выбранного в данный момент параметра раскрывающегося списка (это значение будет реплицировано в другие списки выбора). Этот фрагмент кода зацикливается, поэтому я знаю, что мне нужно будет использовать какой-то .find() или .parent() или что-то в этом роде, что еще не ушло со мной.

Вот исходный код:

<tr>
<th class="form"><label>SI Contact</label></th>
<td id="name_29805"><div style="float: left;">
        <select name="contactsbcuid" id="contactsbcuid_29805" sid="29805" ordr="1">
            <option value="userID1234">Doe, John</option>
            <option value="userID1235">Doe, Jane</option>
            ...
            <option value="userID1236">Smith, David</option>
        </select>
        <input name="orig_contactsbcuid" id="orig_contactsbcuid_29805" value="userID1235" sid="29805" ordr="1" type="hidden">
    </div>
    <div style="float: right;"><span class="ui-icon ui-icon-copy vtip" onClick="CopyDown('contactsbcuid',1)" id="select_contactsbcuid_29805" title="Copy the selected value down the list." style="float: right;"></span></div></td>


  • ваш исходный код отсутствует, пожалуйста, попробуйте еще раз 23.05.2011
  • У меня возникли некоторые трудности с форматированием моего исходного кода с помощью пользовательского тега coldfusion. Если это сбивает с толку, я могу переписать это, чтобы упростить более широкому сообществу stackoverflow. Несмотря на код CF, это больше вопрос jquery, чем что-либо еще. 23.05.2011
  • можете ли вы показать нам код после того, как он был сгенерирован, а не холодный сплав? 23.05.2011
  • не могли бы вы показать код на стороне клиента, который выводится? 23.05.2011
  • ПРИМЕЧАНИЕ. ..Код в сообщении теперь является сгенерированным кодом, а не CF.. 23.05.2011

Ответы:


1

Похоже, что в ячейке таблицы есть только один выбор. Таким образом, должно быть достаточно найти «td», а когда вы его найдете, выполните поиск select.

var value = $(this).parents('td').find('select').val();
23.05.2011
  • Это то, что я пытался, но я вижу, что вы используете parents, тогда как я использовал parent var vl=$(this).parent().next().find("select option:selected").val(); ... и несколько других селекторов :) 23.05.2011
  • Обычно я нахожу .parents более простым в использовании. Если вы используете find, попробуйте запросить элемент select, а не выбранный параметр. Если вы используете val() для элемента select, он должен вернуть значение выбранного параметра. 23.05.2011
  • var vl = $(this).parents('td').find('select').val(); alert('the selected value is:' + vl); предупреждение дает мне неопределенное значение vl. Какие еще идеи у вас есть? 23.05.2011
  • Где вы используете $(это)? Если он находится внутри функции CopyDown, вы должны передать ссылку на него при вызове функции, например. CopyDown(this, 'contactsbcuid', 1) и вместо этого используйте этот параметр. См.: jsfiddle.net/RkYU8. 23.05.2011
  • @nxt Это то, что я ищу, но я удивлен, что это сработало. Вы определили только один элемент в функции и три в onClick. Как это работает? 23.05.2011
  • Я просто был ленив;) Функции в javascript имеют переменное количество аргументов, поэтому вы можете определить функцию с 3 аргументами и использовать только 2 при ее вызове (отсутствующие аргументы по умолчанию будут неопределенными). Или в моем случае дополнительные аргументы игнорируются (вы все равно можете получить к ним доступ, используя массив аргументов) 23.05.2011
  • @nxt Ленивый или просто морочусь? :) Но шутки в сторону, спасибо. Это отлично работает и отлично работает для динамически добавленной строки. На странице есть еще одна кнопка, которая позволяет пользователю добавить дополнительную строку данных, а затем сохранить ее вместе с формой. Он работает отлично и намного короче (и чище), чем я пытался. 24.05.2011
  • В зависимости от того, что вы хотите, вы можете еще больше сократить свой код, заменив все атрибуты onclick одним вызовом функции делегата jQuery. См. jsfiddle.net/VkheB . Это работает путем присоединения одного обработчика событий к общему родительскому элементу (таблице в моем примере), и, поскольку обработчик прикреплен к родительскому элементу, он будет продолжать работать при динамическом добавлении строк и потому, что вы будете прикреплять слушатель только к один элемент, не имеет значения, сколько у вас строк. 24.05.2011

  • 2

    Этот jsFiddle именно то, что вам нужно?

    jQuery:

    $('span[id^="select_contactsbcuid"]').click(function() {
    
        var $select = $('select[name^="' + this.id.split("_")[1] + '"]');
        if ($select.length) { alert($select.val()); }
    
    });
    
    23.05.2011
  • да, но значение должно быть получено из отдельной функции. также я не могу использовать .change, это должна быть функция. Выходной набор очень велик, и ожидание того, что jQuery применит все селекторы/методы к коду, создает сообщение сценария о чем-то подобном. Этот сценарий занимает много времени. Вы хотите отменить сценарий? да нет, я хочу запускать это только при вызове, поэтому кнопка. 23.05.2011
  • если вы хотите использовать это для очень большого количества элементов, потребуется много времени, чтобы прикрепить все обработчики событий. Вам следует рассмотреть возможность использования функции делегата jQuery, чтобы вы могли использовать всплывающее окно событий и уменьшить количество обработчиков. 24.05.2011
  • @nxt - я всегда использую delegate() в своем коде... я просто показывал простой способ чтобы получить значение, которое хотел OP. 24.05.2011
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

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


    © 2024 nano-hash.ru, Nano Hash - криптовалюты, майнинг, программирование