Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.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 Can';不要让jQuery动态选择器工作_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript Can';不要让jQuery动态选择器工作

Javascript Can';不要让jQuery动态选择器工作,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我正在编写一个看似简单的脚本,让按钮在视图中切换div。我以前也这样做过,但这次我在jQuery中使用了动态选择器,看不出哪里出了问题 如果我将调用设为静态调用(即:“#liste_21”),它会像一个符咒一样工作,但由于项目的数量现在不是提前的,我更希望动态版本能够工作 知道怎么了吗 Javascript $(document).ready(function() { $(".jour").click(function() { var jour =

我正在编写一个看似简单的脚本,让按钮在视图中切换div。我以前也这样做过,但这次我在jQuery中使用了动态选择器,看不出哪里出了问题

如果我将调用设为静态调用(即:“#liste_21”),它会像一个符咒一样工作,但由于项目的数量现在不是提前的,我更希望动态版本能够工作

知道怎么了吗

Javascript

    $(document).ready(function() {
        $(".jour").click(function() {
            var jour = $(this).text();
            $('#liste_'+jour).slideToggle();
        });
    });
HTML

<div id="calendrierActivites">
    <div id="nov20" class="jour">
        <span>20</span>
    </div>
    <div id="nov21" class="jour">
        <span>21</span>
    </div>
    <div id="nov22" class="jour">
        <span>22</span>
    </div>
</div>

<div id="liste_20">
    <h2>20 novembre</h2>
</div>
<div id="liste_21">
    <h2>21 novembre</h2>
</div>

<div id="liste_22">
    <h2>22 novembre</h2>
</div>

20
21
22
11月20日
11月21日
11月22日

$(this).text()
将获取
div
中的文本,类为
jour
,您使用了错误的选择器。

jQuery文档

由于不同浏览器中HTML解析器的不同,返回的文本可能在换行符和其他空白处有所不同

您可以简单地删除空白:

var jour = $(this).text().trim();

你需要调整焦耳值

小提琴手:

JS:


$(this).text()
=>打印多余的空格。尝试
trim()
它:
$(this).text().trim()
这就完成了。谢谢!知道跨度为什么要添加空白字符吗?@four关于修剪字符串的建议也起到了作用,所以我想知道到底添加了什么。在每个
.jour
div中,都有换行符和制表符,
元素周围也可能有空格。在您的范围内没有任何这些,因此从中抓取会更安全一些!这不是跨度
.text()
实际上获取父元素的所有子代文本,包括该元素末尾的行终止符和空格。这就是为什么选择“span”元素并获取其文本值更安全的原因
var jour = $(this).text().trim();
$(document).ready(function() {

    $(".jour").click(function() {

        var jour = $(this).text();

        $('#liste_'+$.trim(jour)).slideToggle();
    });
});