JQuery “Any Row” 选取器

JQuery "Any Row" Picker

提问人:Eli 提问时间:10/14/2008 更新时间:4/24/2010 访问量:3464

问:

我正在为 JQuery 寻找一个通用的“行选择器”。

我们都见过很酷的“选择器”工具,如日期选择器、颜色选择器、时间选择器等,你点击一个文本框,就会出现一个小日历、色颚或时钟或其他东西。选择某些内容(如日期),然后用值填充文本框。

我真的需要一个通用的“行选择器”,您可以在其中用一些数据行(例如时区列表)填充某些内容(表、div 等)。这将链接到一个文本字段,并在用户单击该字段时弹出。

他们将单击一行(例如时区),时区 ID 将传递回该字段。

有人知道任何事情可以做到这一点吗?

谢谢!

jQuery 选取器

评论


答:

4赞 Duncan 10/14/2008 #1

我不知道完全通用,尽管您当然可以在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 将单击的结果填充到目标字段中。然后,您可以提出一些约定,其中所有数据表的工作方式都相同,这将允许您将其推广到应用程序的通用选取器中。

2赞 redsquare 10/14/2008 #2

在这种情况下,最好使用事件委派。因此,将事件处理程序放在表本身上,这样就避免了必须为每一行绑定一个处理程序,如果您有好几行,这将非常昂贵。然后,您可以使用 event.target 查询哪个元素负责该事件,并从那里开始。

更多信息在这里

例如

$('#someTable').click(function(e) {
  var target = $(e.target);

});
1赞 Andrew M. Andrews III 4/24/2010 #3

这并不完全是你所要求的,但它可能是你要的:具有时区支持的 Any+Time(TM) Datepicker/Timepicker AJAX Widget 可以直接在时间选择器中显示时区列表,使用户能够轻松选择适当的时区。它也很容易自定义,并且比大多数使用下拉列表或滑块的其他时间选择器允许更快的选择。我希望这会有所帮助!

评论

0赞 Eli 4/25/2010
嘿,这是一个相当不错的日期选择器。下次我需要的时候,我必须记住它。
0赞 Matchu 4/24/2010 #4

我知道我迟到了一年,而且我可能在这里遗漏了一些东西,但是带有属性的元素有什么问题?selectsize

<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。

评论

0赞 Eli 4/25/2010
我想你可能误解了这个问题。搜索是(已经完成了一年左右)一个小部件,该小部件允许您以日期选择器的样式从页外数据库列表中填充字段。
0赞 Eli 4/25/2010
我最终只是自己做了。
0赞 Matchu 4/25/2010
<select>从语义上讲,大小似乎仍然是更好的选择 - 特别是因为你所说的是一个选择,而不是一个表格,正如所暗示的那样。如果你真的需要,你可以通过AJAX用标签填充它,但我可能只是在渲染时填充它以避免这种依赖性(除非你已经是一个全AJAX应用程序)。<table><option>
0赞 Matchu 4/25/2010
当然,既然一切都结束了......meh :P但我仍然觉得我理解了这个问题。我只是不同意这种事情的标准标签不起作用的暗示。
0赞 Pierre Henry 8/7/2012
您可以在自定义“实体选择器”(在页面上显示为覆盖层)上执行的操作,而使用选择无法执行的操作:过滤和/或应用分页和/或搜索可能具有许多行的数据库表,这些行在选择中无法管理...