我有一个非常复杂的聊天应用程序正在进行,并且有多个聊天窗格,聊天条目,聊天提交等在同一窗口中进行。起初,我打算做类似的东西....是否可以使用.data()作为搜索条件?
<input type="text" class="chattext" id="chattext-42">
<input type="text" class="chattext" id="chattext-93">
<input type="button" class="chatsubmit" id="chatsubmit-42">
<input type="button" class="chatsubmit" id="chatsubmit-93">
...等等(当然这是大大简化了,他们会在不同的div,独立能见度等),所以,当他们点击一个.chatsubmit,它会得到这个ID并找到聊天ID的最后两个字符。这提出了一些问题,因为如果ID改变了长度,它将需要重写,并且对我来说似乎仅仅是不雅观的。
我才想起jQuery中的。数据()便利...我想,也许我能做到这一点更是这样的:
<input type="text" class="chattext"> ... and add a .data("id", 42) to this one
<input type="button" class="chatsubmit"> ... and add a .data("id", 42)
所以,当他们点击chatsubmit,它得到的ID,并然后找到具有该ID的chattext并对其进行处理。但看看文档,我没有看到用这种方法搜索的简单方法。例如,假设在这种情况下,事件的目标是用42的数据(“ID”)的chatsubmit ...
var ID = $(event.target).data('id'); // Sets it to 42
var chattext = ...
在这里,我遇到了麻烦。如何找到哪个DOM元素与一个chattext类和一个42的数据('id')匹配?有没有简单的方法,或者我必须搜索每个.chattext的ID为42的那个?还是有另一种简单的方法呢?
我确实考虑过容器div具有ID的可能性,我认为这会使它成为ID?稍微容易得到。但是,如果这能起作用,它也可以处理其他集装箱业务中的事情,这不是一个长期的解决方案。
编辑:发布后几秒钟,我发现这个:http://james.padolsey.com/javascript/extending-jquerys-selector-capabilities/其中包括有关将选择器扩展为数据的信息。所以我会尝试一下,在此期间,这是一种完全蛮干的处理方式吗?
出于某种原因,正则表达式很少出现在我身上。所以我想你已经说服了我。谢谢! – Andrew 2010-06-18 16:20:45