Как получить выбранное значение после клона с помощью jQuery? - PullRequest
2 голосов
/ 31 августа 2009

Вот мой полный код тестирования, который не смог получить значение:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

<head>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <meta http-equiv="Content-Language" content="en-us" />
    <title>Job Search</title>
    <script language="javascript" type="text/javascript" src="script/jquery-1.3.2.js"></script>
    <script language="javascript">
        $(document).ready(function(){
            $('#test').click(function(){
                $('#container').clone().attr('id', 'container2').find('select').each(function() {
                    var $elem = $(this);
                    var value = $elem.val();
                    alert(value);
                });
            });
        });
    </script>
</head>

<body>
<div id="container">
    <select>
        <option value="">--</option>
        <option value="Service">Service</option>
        <option value="Sales">Sales</option>
        <option value="Marketing">Marketing</option>
        <option value="Finance">Finance</option>
        <option value="Engineering">Engineering</option>
        <option value="Management">Management</option>
    </select>
</div>
<input type="button" id="test" />
</body>

</html>

Ответы [ 5 ]

2 голосов
/ 31 августа 2009
$('#container').clone().attr('id', 'container2').find('select > option').each(function() {
                var $elem = $(this);
                var value = $elem.val();
                alert(value);
            });

Изменен селектор в методе поиска для выбора> опции из выбора.

Также, почему вы клонируете элемент, если не собираетесь добавлять его в DOM.

Чтобы получить выбранное значение клонированного элемента, вы можете использовать

$('#container').clone().attr('id', 'container2').find('select > option:selected').val()

Если вам нужно вставить клонированный элемент в DOM, вы можете использовать

$('#container').clone().attr('id', 'container2').appendTo("body")

и полный код для получения значения выбранного параметра после вставки клонированного элемента в DOM

$('#container').clone().attr('id', 'container2').appendTo("body").find('select > option:selected').val()

Полный код для нажатия кнопки

 $(document).ready(function(){
            $('#test').click(function(){
                $('#container').clone().attr('id', 'container2').appendTo("body").find('select > option:selected').each(function() {
                    alert ( $(this).val());
                });
            });
        });
1 голос
/ 31 августа 2009

Я попробовал, и это работает.

$container.find('select').each(function() {
    alert($(this).attr('value'));
});
0 голосов
/ 11 июля 2014
function studentInfo() {
var studentInfoUrl = ".../studentInfourl"; 
var multiTags=$('.copy');
var name= multiTags.find("select.form-control#name").map(function() {
    return $(this).val();
}).get().join(',');
var dob= multiTags.find("input.form-control#dob").map(function() {
    return $(this).val();
}).get().join(',');
var gender= multiTags.find("#gender:checked").map(function() {
    return $(this).val();
}).get().join(',');
var collage= multiTags.find(".input.form-control#collage").map(function() {
    return $(this).val();
}).get().join(',');
var cloneName= '';
var cloneDob= '';
var cloneGender= '';
var cloneCollage= '';
var arr=[];
if($('.copy').length<=2){
      cloneName= name.split(',');
        cloneDob= dob.split(',');
        cloneGender= gender.split(',');
         cloneCollage= collage.split(',');
}
    for(var i=0;i<$('.copy').length ;i++){
        var studentInfo = {
                studentId  :   $("#studentId").val(),
                name       :   cloneName[i],
                dob        :   cloneDob[i],
                gender     :   cloneGender[i],
                collage    :   cloneCollage[i],
        };
        arr.push(studentInfo);
    }
    var astudentJsonRequest = JSON.stringify(arr);
    alert(arr);
    $.ajax({
        contentType : "application/json",
        dataType : 'json',
        data : astudentJsonRequest ,
        cache : false,
        type : "POST",
        url : studentInfoUrl ,
        success : function(data){}

}); }

Здесь я могу получить отдельные значения типа ввода из таблицы клонов, а затем использовать метод split, чтобы разделить эти значения, и после того, как я найду длину таблицы клонов и назначу эти значения соответствующим значениям бина.

0 голосов
/ 18 июля 2012

Вы правы. clone теряет выбранное значение.

Что я и сделал, работая с клоном, я искал фактический элемент с тем же id и получил его значение.

т.е. Получить значение из фактического элемента вместо клона

Как показано ниже,

var selectedOption = $('#' + cloneOfSelect.attr('id')).find('option:selected');

var selectedValue = selectedOption.val(); //or .text() for display value
0 голосов
/ 31 августа 2009
$('select > option:selected').val();

Чтобы перебрать все выбранные элементы на странице и предупредить значения выбранных опций:

$('select > option:selected').each(function() {
    alert($(this).val());
});
...