我试图建立与下面的代码中的动态jQuery选择:jQuery选择内使用变量
var section_id = "{segment_3}";
var num_children = $('#'+ section_id + ' ul').children().size();
其中segment_3是一个值我从URL字符串,成功检索的,例如,可能返回“section_one”的值
但试图创建变量num_children时,此引用不起作用。我如何构建代码来构建动态引用?谢谢你的帮助。
我试图建立与下面的代码中的动态jQuery选择:jQuery选择内使用变量
var section_id = "{segment_3}";
var num_children = $('#'+ section_id + ' ul').children().size();
其中segment_3是一个值我从URL字符串,成功检索的,例如,可能返回“section_one”的值
但试图创建变量num_children时,此引用不起作用。我如何构建代码来构建动态引用?谢谢你的帮助。
假设VAR SECTION_ID = 'section_1' 这样的:
$('#'+ section_id + ' ul').children().size();
会给你
$('#section_1 ul').children().size();
,是的,这是有效的为好。它会为你提供#section_1元素中的所有ul元素(不管它们有多深)。可能你会得到一些元素,并调用.children()也很好。它应该都可以工作。
尝试
var num_children = $('#'+ section_id.substring(1, section_id.length-2) + ' ul').children().size();
上述评论是正确的......对于一个id选择的基本语法是$(#ITEMID)...
VAR myvalue的= $( “#new_grouping _” + ⅰ).VAL(); //这个工程
截至HTML 4.01 id属性受到很大限制有关允许值的字符(命名规则):
id属性必须以字母 AZ或az,随后开始:字母 (A-Za-z),数字(0-9),连字符(“ - ”), 下划线(“_”),冒号(“:”)和 句点(“。”),所有值均为 区分大小写。
*注:根据我的经验,我发现只使用小写字符和_为ID的令他们非常清楚,他们脱颖而出CSS选择器(.something:伪类)*
在另一方面在HTML5中,你几乎可以拥有任何id的值。
编号:http://www.w3.org/TR/html5/elements.html#the-id-attribute
所以,你的选择是完全没有问题的(有效)与HTML5规格,但为了得到它与jQuery的工作,你需要躲避选择解析器有特殊含义使用的所有字符。由于它的JavaScript代码,你必须使用两个\\(第一个转义第二个)。 JQuery的不为您提供一种方式来做到这一点,所以下面是我使用的代码:我编辑的代码,很少失误,其中固定
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>jQuery HTML5 Selector Escaping</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
// Ths is the list of special characters used by jquery selector parser
// !"#$%&'()*+,./:;[email protected][\]^`{|}~
$(document).ready(function() {
var selector = '{my_%real{ly:s#tra`n[ge_i]d_n^@a|me>}';
selector = selector.replace(/([ {}\|`\^@\?%#;&,.+*~\':"!^$[\]()=>|\/])/g,'\\$1');
var object = $('#'+selector+' ul').children().size();
alert('UL has '+ object +' LIs');
});
</script>
</head>
<body>
<div id="{my_%real{ly:s#tra`n[ge_i]d_n^@a|me>}">
<ul>
<li>Sehr</li>
<li>Gut</li>
<li>Doh</li>
</ul>
</div>
</body>
</html>
:
例。 :)
元素的ID是否真的是{{segment_3}`?大括号使其无效。 – lonesomeday 2011-01-27 23:57:14
当你使用它时,你的section_id var是否真的不包含花括号?那会造成问题。 – CalebHC 2011-01-27 23:58:29