我希望通过#chocolate_type
获取lqjmje5plsqnl258canal0lmb0!323
的内容
作为jQuery的参数。我试过了:
$('#'+id).find('td:first').html();
但它不起作用。这是标记:
<tr bgcolor="#CCCCCC" align="center" id="lqjmje5plsqnl258canal0lmb0!323">
<td id="chocolate_type">Chocolate Hearts</td>
<td>2.79</td>
</tr>
提前感谢您的帮助。
答案 0 :(得分:2)
您的ID包含无效字符。来自w3c:
ID和NAME令牌必须以字母([A-Za-z])开头,后面可以跟任意数量的字母,数字([0-9]),连字符(“ - ”),下划线(“ _“),冒号(”:“)和句号(”。“)。
更多信息here
答案 1 :(得分:1)
我怀疑lqjmje5plsqnl258canal0lmb0!323
似乎不是id的好价值。 id值不应以数字开头,您应该避免使用特殊字符作为id的值:
$('#lqjmje5plsqnl258canal0lmb0!323 #chocolate_type').html();
您也可以通过id:
直接获取内容$('#chocolate_type').html();
答案 2 :(得分:1)
您的代码看起来不错,但您无法在ID中使用!
字符。我想这可能是你的问题。
您可以使用$('#' + id).find('td:first')
,$('td:first', '#' + id)
,$('#' + id + ' td:first')
或任何您喜欢的内容。我相信所有这些都有性能比较,我会看看能否找到它。
编辑:这是一篇关于jQuery性能的非常有趣的文章,它说find()
比上下文更好:http://jonraasch.com/blog/10-advanced-jquery-performance-tuning-tips-from-paul-irish。所以,你做得对。只需更改ID:)
答案 3 :(得分:0)
尝试类似$('tr[id=' + id + ']').html()
之类的内容。这对我有用。这只是样本。在您的情况下,它将成为$('tr[id=' + id + ']').find('td:first').html()
。
更新:$('#' + id)
是您的ID在其他变量中时找到元素的正确方法。但是,在您的情况下,!
会导致问题并阻止其发挥作用。
答案 4 :(得分:0)
最好以这种方式编写代码
$('tr#'+id+' td:first').html();
答案 5 :(得分:0)
由于感叹号,选择器失败。如果您使用的是Firefox,请检查您的控制台,您应该会看到如下错误:
错误:未捕获的异常:语法错误,无法识别的表达式:!323
如果可以,请从ID中删除感叹号。可以在此处找到ID的允许字符:
http://www.electrictoolbox.com/valid-characters-html-id-attribute/
使用$('tr[id='+id+']')
也会起作用,但你真的不应该依赖它,因为功能可能因为这是未定义的行为而改变。
答案 6 :(得分:0)
我在构建搜索表单时遇到了同样的问题,因为我使用搜索上下文构建以在每次提交后重建表单。例如,搜索“!#/ \”会生成一些无效的ID。
对于许多简单类型的无效字符(特别是当您自动生成ID并且无法严格控制输入时),请故障转移到JavaScript:
的document.getElementById(yourElementId);
工作得很好。