如何通过点击事件使用JQuery在<div> <p>的下拉列表中获取所选值?</p> </div>

时间:2013-07-05 08:48:57

标签: javascript jquery html drop-down-menu

我有一个下拉月,它根据所选输入的年份动态填充。

enter image description here

当用户点击Month Dropdown时,会显示月份列表。 如何使用JQuery获取用户选择的月份值?假设下拉列表是动态填充的。

当用户点击显示的月份列表

时,将调用此函数
$("#month").click(function() {
    var value = $(this).children("div p").val(); // return undefined
    console.log("month: " + value);
}); 

HTLM下拉

<div id="month">
    <span class="input">März</span>
    <div class="dropdown">
        <p></p>
    </div>
</div>

当用户点击下拉月份时,UpdateMonths()函数会被调用并动态填充列表

$("#month span").click(function(event) {

    $("#month div").html(UpdateMonths());


    event.stopPropagation();
    if (!$(this).hasClass('disabled')) { // only open downdown when not disabled
        Dropdown($(this).parent().attr("id"));
    } else Dropdown(); // hide all dropdown menues
});

function Dropdown (element) {

    $("#month div").hide(); // hide all dropdowns
    if (element) $("#"+element+" div").toggle(); // show dropdown of specified element
}

这是我填写列表的方式

function UpdateMonths(){
var temp = "";
    if (parseInt(Get.Year()) <= 2012){
        for (var i = 0; i < Get.Months.length; i++) {
            var monthsChain = "<p>"+Get.Months[i]+"</p>";
            temp += monthsChain;
        };
    }else{
        temp = "<p>Januar</p><p>Februar</p><p>März<p></p><p>April</p><p>Mai</p><p>Juni</p><p>Juli</p>"; 
    }
    return temp;
}

5 个答案:

答案 0 :(得分:2)

你可以尝试

var value = $(this).find("div p").text();

或更具体:

var value = $(this).find("div.dropdown p").text();

答案 1 :(得分:1)

.val()用于获取表单字段的值。如果您想要通用HTML元素的文本内容(例如<span><p>,则需要使用.text()

$("#month").click(function() {
    var value = $(this).find('.input').text();
    console.log("month: " + value);
}); 

确保从下拉列表的HTML类中删除句点(。) - 类必须以字母开头,而不是数字或标点符号。

答案 2 :(得分:1)

看起来您所选的值位于<span>而不是<p>,因此它应该是:

var value = $(this).children("span.input").text();

编辑:你可以这样做:

$(document).on('click', '#month', function(e) {
    if($(e.target).is('p')) {
        var value = $(e.target).text();
        console.log(value);
    }
}); 

答案 3 :(得分:1)

我假设您希望从p元素列表中选择月份。

HTML(与问题类似的结构)

<div id="month">
    <span class="input"></span>
    <div class="dropdown">
        <p>January</p><p>February</p>
    </div>
</div>

<div id="year">
    <span class="input"></span>
    <div class="dropdown">
        <p>2013</p><p>2014</p>
    </div>
</div>

jQuery,需要委托事件,因为<p>元素是动态生成的。

$("#month, #year").on('click', '.dropdown p', function() {
    var value = $(this).text();
    console.log("month: " + value);
}); 

如何将月值设置为span(在上面的范围内)

$(this).parent().siblings('span').text(value);

和jsfiddle一起玩

http://jsfiddle.net/2nuhw/4/

答案 4 :(得分:0)

您可以将val()用于输入字段。使用text()来获取文本字段。通常

并有文字。

尝试这样:

var value = $(this).children("div p").text();

var value = $(this).children("div p").html();

使用html(),您可以获得属于span或p标签的任何类型的值。