提问人:Eli 提问时间:10/14/2008 更新时间:4/24/2010 访问量:3464
JQuery “Any Row” 选取器
JQuery "Any Row" Picker
问:
我正在为 JQuery 寻找一个通用的“行选择器”。
我们都见过很酷的“选择器”工具,如日期选择器、颜色选择器、时间选择器等,你点击一个文本框,就会出现一个小日历、色颚或时钟或其他东西。选择某些内容(如日期),然后用值填充文本框。
我真的需要一个通用的“行选择器”,您可以在其中用一些数据行(例如时区列表)填充某些内容(表、div 等)。这将链接到一个文本字段,并在用户单击该字段时弹出。
他们将单击一行(例如时区),时区 ID 将传递回该字段。
有人知道任何事情可以做到这一点吗?
谢谢!
答:
我不知道完全通用,尽管您当然可以在jQuery中相当容易地实现行选择器。
<script type="text/javascript"> $(function() {
$('table#data_table tr').click(function() {
alert($(this).find('td.id').html());
}); });
</script>
<table border="0" id="data_table">
<tr>
<td class="id">45</td><td>GMT</td>
</tr>
<tr>
<td class="id">47</td><td>CST</td>
</tr>
</table>
这将为每一行添加一个单击,在行中找到标记的 ID,然后允许您对其进行操作。显然,您需要将其定位到您的数据表并根据内容进行过滤。然后,可以使用 JQuery 将单击的结果填充到目标字段中。然后,您可以提出一些约定,其中所有数据表的工作方式都相同,这将允许您将其推广到应用程序的通用选取器中。
在这种情况下,最好使用事件委派。因此,将事件处理程序放在表本身上,这样就避免了必须为每一行绑定一个处理程序,如果您有好几行,这将非常昂贵。然后,您可以使用 event.target 查询哪个元素负责该事件,并从那里开始。
更多信息在这里
例如
$('#someTable').click(function(e) {
var target = $(e.target);
});
这并不完全是你所要求的,但它可能是你要找的:具有时区支持的 Any+Time(TM) Datepicker/Timepicker AJAX Widget 可以直接在时间选择器中显示时区列表,使用户能够轻松选择适当的时区。它也很容易自定义,并且比大多数使用下拉列表或滑块的其他时间选择器允许更快的选择。我希望这会有所帮助!
评论
我知道我迟到了一年,而且我可能在这里遗漏了一些东西,但是带有属性的元素有什么问题?select
size
<select name="test" size="5">
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
<option value="4">Four</option>
<option value="5">Five</option>
</select>
这将显示所有 5 个选项,并允许用户选择一个。如果只是以标准形式使用,它也绝对没有 Javascript 依赖性,但也可以很好地处理典型的 Javascript 事件,并且似乎也产生了您想要的确切外观 - 更不用说,一如既往,您可以使用 CSS 来设置它。
当标准HTML可以工作时,我说:使用标准HTML。
评论
<select>
从语义上讲,大小似乎仍然是更好的选择 - 特别是因为你所说的是一个选择,而不是一个表格,正如所暗示的那样。如果你真的需要,你可以通过AJAX用标签填充它,但我可能只是在渲染时填充它以避免这种依赖性(除非你已经是一个全AJAX应用程序)。<table>
<option>
评论