Javascript 使用jQuery获取id为的特定th标记
我正在为一个工作项目使用Bootstrap插件(因此,是的,当我把它放在这里时,代码将被严重审查)。该插件获取JSON对象(在ColdFusion 10中创建),并将它们放入HTML表中 我基本上有一个表,它有两个单独的列,这两个列只是复选框,分配和完成。该插件删除th标签的内容,即Javascript 使用jQuery获取id为的特定th标记,javascript,jquery,css,twitter-bootstrap,Javascript,Jquery,Css,Twitter Bootstrap,我正在为一个工作项目使用Bootstrap插件(因此,是的,当我把它放在这里时,代码将被严重审查)。该插件获取JSON对象(在ColdFusion 10中创建),并将它们放入HTML表中 我基本上有一个表,它有两个单独的列,这两个列只是复选框,分配和完成。该插件删除th标签的内容,即Complete,并在该字段中放置一个复选框。插件创建者表示,我基本上是靠自己来解决这个问题的,使用前面给出的链接中的示例 所以。我已经为th telement分配了ID标记,即分配了,我正试图使用jQuery来获取
Complete
,并在该字段中放置一个复选框。插件创建者表示,我基本上是靠自己来解决这个问题的,使用前面给出的链接中的示例
所以。我已经为th telement分配了ID标记,即分配了
,我正试图使用jQuery来获取这些元素,只是th框本身,不去管行,这样我就可以自己去处理了$(“#assigned”)不起作用,我担心第n个子选择器等,因为如果后续开发人员重新安排列顺序,它将中断。我希望有一个解决方案,未来的开发人员更难打破
FWIW,这是jQuery和Bootstrap的最新版本,在浏览器中加载了Modernizer,但到目前为止还没有使用(我明白了!)如果有帮助的话,我并不反对添加jQueryUI,但我们正在回避jQuery Mobile,原因超出了本文的范围。哦,这些都在标签中,因为插件需要它
是的,我曾尝试过谷歌搜索,并阅读过官方jQuery文档,但给出的解决方案要么古老,要么太“脆弱”
TLDR版本:我想选择特定的th标记并强制将文本插入其中。在HTML中,id属性应该是唯一的。因此,使用相同ID的多个元素是错误的。几个选项之一是使用唯一类选择器或添加自己的唯一属性
<th class="my_assigned" data-field="ASSIGNED" data-formatter="chkBoxFormatter" data-title="Assigned" data-align="center" data-valign="bottom" data-sortable="false" data-checkbox="true">Assigned</th>
$('.my_assigned') ...
已分配
$('.my_assigned')。。。
或者,因为这些属性似乎是独一无二的,所以任何方式都可以依靠它们
<th data-field="ASSIGNED" id="assigned" data-formatter="chkBoxFormatter" data-title="Assigned" data-align="center" data-valign="bottom" data-sortable="false" data-checkbox="true">Assigned</th>
$('[data-field=ASSIGNED]') ...
已分配
$('[data field=ASSIGNED]')。。。
选择器指示一个唯一的对象id,这意味着,您应该只有一个id为“assigned”的th。另一方面,您可以使用同一个类拥有许多元素
因此,解决方案可能是将“分配的”属性切换到类,如:
<th data-field="ASSIGNED" class="assigned" data-formatter="chkBoxFormatter" data-title="Assigned" data-align="center" data-valign="bottom" data-sortable="false" data-checkbox="true">Assigned</th>
@珍妮特
由于$(“#赋值”).length
返回0,这意味着TH元素此时不存在
您需要确保已经呈现了表TH元素
换句话说,当您需要使用$(“#assigned”)
时,您要查找的第th个元素在DOM中还不存在
尝试以下操作,看看您得到了什么:
setTimeout(function(){
console.log($("#assigned").length);
}, 5000);
匿名函数将在5秒内异步执行。希望到时你的TH能被呈现出来
编辑:
我的
请在JSFIDLE中重现错误。
$(“#分配”)。长度给您多少?$(“#分配”)
-只要您有唯一的ID,应该始终有效。这是必须的。@TchiYuan console.log($(“#分配”).length);打印0如果不能使用唯一ID,为什么不使用属性选择器?i、 e.$(“th[attribute='property'])
这仍然打印为零。@Janet那么我真的不知道,但您的问题是,当您执行$(“#赋值”)时,您的DOM中肯定不存在th元素。你需要为我们设置一个JSFIDLE来帮助你更多。在我的原始帖子的评论中有一个。嗨,珍妮特,检查这个。它对我有用。找到id为“assigned”的TH元素。它在IE和Firefox中工作,但Chrome正在输入未找到的代码。这可能会引发另一个问题,但Chrome是否有不同的功能?
setTimeout(function(){
console.log($("#assigned").length);
}, 5000);