Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jQuery获取id为的特定th标记_Javascript_Jquery_Css_Twitter Bootstrap - Fatal编程技术网

Javascript 使用jQuery获取id为的特定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来获取

我正在为一个工作项目使用Bootstrap插件(因此,是的,当我把它放在这里时,代码将被严重审查)。该插件获取JSON对象(在ColdFusion 10中创建),并将它们放入HTML表中

我基本上有一个表,它有两个单独的列,这两个列只是复选框,分配和完成。该插件删除th标签的内容,即
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);