Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.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_Javascript_Jquery_Ruby On Rails 3_Html_Coffeescript - Fatal编程技术网

Javascript 干涸JQuery

Javascript 干涸JQuery,javascript,jquery,ruby-on-rails-3,html,coffeescript,Javascript,Jquery,Ruby On Rails 3,Html,Coffeescript,我有几个链接和div,我想有相同的功能上。基本上,你点击一个链接/按钮/任何被选为触发器的东西,相应的空间就会打开 标记看起来像 <!-- some code --> <li><a href="#" id="first">First</a></li> <li><a href="#" id="second">Second</a></li> <li><a href="#" i

我有几个链接和div,我想有相同的功能上。基本上,你点击一个链接/按钮/任何被选为触发器的东西,相应的空间就会打开

标记看起来像

<!-- some code -->
<li><a href="#" id="first">First</a></li>
<li><a href="#" id="second">Second</a></li>
<li><a href="#" id="third">Third</a></li>

<div id="f_i_r_s_t"></div>
<div id="s_e_c_o_n_d"></div>
<div id="t_h_i_r_d"></div>
哪一个有效

// refactored_script.js.coffee
hideables = {
  '#first': '#f_i_r_s_t',
  '#second': '#s_e_c_o_n_d',
  '#third': '#t_h_i_r_d'
}

for content_space, link_trigger in hideables
  $(content_space).hide()
  $(link_trigger).click ->
    $(content_space).slideFadeToggle()
但是重构后的脚本不起作用。有什么想法吗?

像这样做吧

<li><a href="#" class="links" id="first">First</a></li>
<li><a href="#" class="links" id="second">Second</a></li>
<li><a href="#" class="links" id="third">Third</a></li>

<div id="first-content"></div>
<div id="second-content"></div>
<div id="third-content"></div>

$('a.links').click(function() {
    $('#' + $(this).attr('id') + '-content').slideToggle()
});
  • $('a.links')。单击(函数(){ $('#'+$(this.attr('id')+'-content').slideToggle() });
    在你的身份证上加下划线只会让你的问题变得更难,更没有活力;当然可以。您只需获取ID attr并在每个字符之间插入下划线,但是。。。这就是我要说的一切。

    像这样做吧

    <li><a href="#" class="links" id="first">First</a></li>
    <li><a href="#" class="links" id="second">Second</a></li>
    <li><a href="#" class="links" id="third">Third</a></li>
    
    <div id="first-content"></div>
    <div id="second-content"></div>
    <div id="third-content"></div>
    
    $('a.links').click(function() {
        $('#' + $(this).attr('id') + '-content').slideToggle()
    });
    
  • $('a.links')。单击(函数(){ $('#'+$(this.attr('id')+'-content').slideToggle() });

    在你的身份证上加下划线只会让你的问题变得更难,更没有活力;当然可以。您只需获取ID attr并在每个字符之间插入下划线,但是。。。这就是我要说的一切。

    我会这样做:

    <li><a href="#" class=toggler toggle="first">First</a></li>
    <li><a href="#" class=toggler toggle="second">Second</a></li>
    <li><a href="#" class=toggler toggle="third">Third</a></li>
    
    <div id="first"></div>
    <div id="second"></div>
    <div id="third"></div>
    

    这是一种通用解决方案,可以以多种方式使用。

    我将通过以下方式实现:

    <li><a href="#" class=toggler toggle="first">First</a></li>
    <li><a href="#" class=toggler toggle="second">Second</a></li>
    <li><a href="#" class=toggler toggle="third">Third</a></li>
    
    <div id="first"></div>
    <div id="second"></div>
    <div id="third"></div>
    
    这是一种通用的解决方案,可以以多种方式使用。

    我确实会这样做

    <li class="links"><a href="#first">First</a></li>
    <li class="links"><a href="#second">Second</a></li>
    <li class="links"><a href="#third">Third</a></li>
    
    <div id="first"></div>
    <div id="second"></div>
    <div id="third"></div>
    
    $('li.links a').click(function(e) {
        e.preventDefault();
        target = $(this).attr('href');
        $(target).slideToggle();
    });
    
  • $('li.links a')。单击(函数(e){ e、 预防默认值(); target=$(this.attr('href'); $(目标).slideToggle(); });
    这样,您就可以使用css:target属性作为故障转移

    我实际上会这样做

    <li class="links"><a href="#first">First</a></li>
    <li class="links"><a href="#second">Second</a></li>
    <li class="links"><a href="#third">Third</a></li>
    
    <div id="first"></div>
    <div id="second"></div>
    <div id="third"></div>
    
    $('li.links a').click(function(e) {
        e.preventDefault();
        target = $(this).attr('href');
        $(target).slideToggle();
    });
    
  • $('li.links a')。单击(函数(e){ e、 预防默认值(); target=$(this.attr('href'); $(目标).slideToggle(); });

    通过这种方式,您可以使用css:target属性作为故障转移

    您可以执行以下控制台:test=对于内容空间,在hideables中使用link\u触发器;我认为这种语法是错误的。是的,你的名字完全错了。f\u i\u r\u s\t->说真的吗?这也许是一个更好的问题。谢谢,我只是为了提问的目的而使用它。概念是链接“爆炸”空间。我的应用程序使用了更多我无法使用的描述性术语here@RaynosПΞVΞЯ…好吧,也许最终你需要中的括号;我认为这种语法是错误的。是的,你的名字完全错了。f\u i\u r\u s\t->说真的吗?这也许是一个更好的问题。谢谢,我只是为了提问的目的而使用它。概念是链接“爆炸”空间。我的应用程序使用了更多我无法使用的描述性术语here@RaynosΞVΞЯ…好吧,也许最终你需要
    中的括号来表示