使用'parents'和'find'选择的下拉菜单的选定值返回undefined - Jquery

时间:2016-03-30 13:06:22

标签: javascript jquery html drop-down-menu

我有一个包含同一下拉菜单的多个实例的表格;表格的每一行代表一个独特的操作,因此我需要每次都能在此下拉菜单中捕获用户的选择。

我的HTML代码看起来像这样(为简洁而截断):

<tr class="convRow"><td>
    <select class="convSelect">
        <option value="Select" selected="selected">Select</option>
        <option value="1">Foo</option>
        <option value="2">Bar</option>
    </select>
</td></tr>

在下拉列表的更改事件中,我调用此Jquery函数:

function convertThis(e) {
    var targ = e.target || e.srcElement,
        cSel = $(targ).parents('.convRow').prev().find('.convSelect').val();

    console.log(cSel);
}

显然,这里必须发生比console.log更多的事情,但是你明白了。关键是cSel当前返回undefined,当它应该根据用户选择的内容返回1,2或Select时 - 我想获取值,而不是选定的文本。

将有七个表'rowRow'的表行,以及需要检索此数据的不同实例 - 而不仅仅是下拉更改事件,这就是我这样做的原因。我还尝试了减去'prev()'函数的函数但没有成功。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我建议您在当前元素的this上下文中直接使用function convertThis(e) { var sSel = $(this).val(); console.log(cSel); } 方法。像

.prev()

但是,您需要从语句中删除tr,因为它将在$(targ).parents('.convRow').find('.convSelect').val(); 元素的上一个兄弟中搜索元素。

使用

$(targ).parents('.convRow').prev().find('.convSelect').val();

而不是

getColumnText(Object e1, int c1)

答案 1 :(得分:0)

我认为你应该使用jquery事件

 $(".convSelect").on('change', function(){
   sSel = $(this).val();
   console.log(sSel);
})