2011-05-23 66 views
1

我有一个下拉列表显示值在选择标记,我通常会只使用$('#ID')。val()来获得值,但ID是未知的或动态添加的行。jquery查找所选项目的价值在下拉与扭曲

在关闭选择标记之后,我有一个jquery ui图标,当我单击它时将捕获当前选定的下拉选项的值(此值将被复制到其他选择列表中)。这段代码循环播放,所以我知道我需要使用某种.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> 

+0

你的源代码丢失,请重试我有一定的困难,格式化我的源代码具有ColdFusion自定义标签 – mcgrailm 2011-05-23 19:18:55

+0

。如果这是令人困惑的,我可以重写这个以使更简单的更多的stackoverflow社区更容易。尽管有CF代码,但这更像是一个jQuery问题。 – HPWD 2011-05-23 19:19:16

+1

你可以得到显示代码后,它已经生成rthant比coldfusion – mcgrailm 2011-05-23 19:21:23

回答

0

它看起来像只存在于TableCell的一个选择。 所以它应该足以找到'TD',并且当你发现它搜索选择。

var value = $(this).parents('td').find('select').val(); 
+0

这是我正在尝试,但我看到你正在使用'父母',而我正在使用'父' ()“。选择选项:选择”)。val();' ...和其他几个选择器:) – HPWD 2011-05-23 19:26:52

+1

我通常会找到。父母更容易使用。如果使用find,请尝试查询select元素,而不是所选的选项。如果在select元素上使用val(),它应该返回所选选项的值。 – nxt 2011-05-23 19:31:27

+0

'var vl = $(this).parents('td')。find('select')。val(); alert('所选值为:'+ v1);' 警报给我未定义的vl。你还有什么其他想法? – HPWD 2011-05-23 19:35:47

0

Is this jsFiddle what you are essentially looking for?

的jQuery:

$('span[id^="select_contactsbcuid"]').click(function() { 

    var $select = $('select[name^="' + this.id.split("_")[1] + '"]'); 
    if ($select.length) { alert($select.val()); } 

}); 
+0

是的,但该值需要从一个单独的功能中获得。另外,我不能使用.change,它必须是一个函数。输出集非常大,并且等待jQuery将所有选择器/方法应用于代码时,会创建一个脚本消息来实现效果,“此脚本需要很长时间才能完成。是否要取消脚本?是没有“ 我想只在被调用时触发这个按钮。 – HPWD 2011-05-23 19:46:11

+0

好的...检查我更新的jsFiddle并现在回答。 – 2011-05-23 19:49:48

+0

如果你想在大量的元素上使用它,则需要很长时间来附加所有的事件处理程序。您应该考虑使用jQuery委托函数,以便您可以使用事件冒泡并减少处理程序的数量 – nxt 2011-05-23 20:07:36