Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.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
使用串联和Jquery选择器使代码动态/更轻_Jquery_Html_Dynamic_Custom Data Attribute - Fatal编程技术网

使用串联和Jquery选择器使代码动态/更轻

使用串联和Jquery选择器使代码动态/更轻,jquery,html,dynamic,custom-data-attribute,Jquery,Html,Dynamic,Custom Data Attribute,我一直在寻找使我拥有的这个非常明确的代码块更具动态性的方法。代码和更多解释如下: HTML优先: <nav> <ul> <li><span id="home-btn">Home</span></li> <li><span id="work-btn">Work</span></li>

我一直在寻找使我拥有的这个非常明确的代码块更具动态性的方法。代码和更多解释如下:

HTML优先:

    <nav>
        <ul>
            <li><span id="home-btn">Home</span></li>
            <li><span id="work-btn">Work</span></li>
            <li><span id="contact-btn">Contact</span></li>
        </ul>
    </nav>
正如您所看到的,我的代码是非常冗余的,我想让它更具动态性。我最初尝试连接选择器,但我仍然是JS新手,无法找到一个有效的解决方案。我的下一次尝试尝试使用
.data
HTML属性和JQuery方法,但我也无法让它工作。我使用了不同的
.addClass
removeClass
hasClass
方法将
.active
隐藏的
类添加到元素
。onClick
。这个解决方案最接近我,但没有发挥我想要的作用

我最大的挑战是:如何关联侦听单击事件的“按钮”,以知道要显示或隐藏哪个div(这就是我使用data属性的原因)。。。其他一些我已经研究过但没有尝试过的解决方案(只是因为我不知道如何为我的代码定制它们)是
.split
。每个
,以及使用
这个

提前感谢!:)

HTML:

<nav>
    <ul>
        <li><span data-target="home"    id="home-btn">Home</span></li>
        <li><span data-target="work"    id="work-btn">Work</span></li>
        <li><span data-target="contact" id="contact-btn">Contact</span></li>
    </ul>
</nav>
$('nav ul li span').click(function(){
    var load = $(this).data('target');
    $('.page').hide();
    $('#'+load).show();
});
您还可以使用
而不是
,使用属性
href='javascript:void(0)'

HTML:

<nav>
    <ul>
        <li><span data-target="home"    id="home-btn">Home</span></li>
        <li><span data-target="work"    id="work-btn">Work</span></li>
        <li><span data-target="contact" id="contact-btn">Contact</span></li>
    </ul>
</nav>
$('nav ul li span').click(function(){
    var load = $(this).data('target');
    $('.page').hide();
    $('#'+load).show();
});
您还可以使用
而不是
,使用属性
href='javascript:void(0)'

HTML:

<nav>
    <ul>
        <li><span data-target="home"    id="home-btn">Home</span></li>
        <li><span data-target="work"    id="work-btn">Work</span></li>
        <li><span data-target="contact" id="contact-btn">Contact</span></li>
    </ul>
</nav>
$('nav ul li span').click(function(){
    var load = $(this).data('target');
    $('.page').hide();
    $('#'+load).show();
});
您还可以使用
而不是
,使用属性
href='javascript:void(0)'

HTML:

<nav>
    <ul>
        <li><span data-target="home"    id="home-btn">Home</span></li>
        <li><span data-target="work"    id="work-btn">Work</span></li>
        <li><span data-target="contact" id="contact-btn">Contact</span></li>
    </ul>
</nav>
$('nav ul li span').click(function(){
    var load = $(this).data('target');
    $('.page').hide();
    $('#'+load).show();
});
您还可以使用
而不是
,使用属性
href='javascript:void(0)'


首先,我会对您的html进行如下更改:

<nav class="main-nav">
    <ul>
        <li><span data-content="#home">Home</span></li>
        <li><span data-content="#work">Work</span></li>
        <li><span data-content="#contact">Contact</span></li>
    </ul>
</nav>
ID属性应该是唯一的,因此没有理由需要执行
div\ID
,只需执行
\ID

现在来看动态部分:

$('.main-nav').find('span').on('click', function()
    {
        $('.page').hide(); //hide all the content
        $( $(this).attr('data-content') ).show(); //grab the reference we set up in data-cotnent and show that element.
    }
)};

首先,我会对您的html进行如下更改:

<nav class="main-nav">
    <ul>
        <li><span data-content="#home">Home</span></li>
        <li><span data-content="#work">Work</span></li>
        <li><span data-content="#contact">Contact</span></li>
    </ul>
</nav>
ID属性应该是唯一的,因此没有理由需要执行
div\ID
,只需执行
\ID

现在来看动态部分:

$('.main-nav').find('span').on('click', function()
    {
        $('.page').hide(); //hide all the content
        $( $(this).attr('data-content') ).show(); //grab the reference we set up in data-cotnent and show that element.
    }
)};

首先,我会对您的html进行如下更改:

<nav class="main-nav">
    <ul>
        <li><span data-content="#home">Home</span></li>
        <li><span data-content="#work">Work</span></li>
        <li><span data-content="#contact">Contact</span></li>
    </ul>
</nav>
ID属性应该是唯一的,因此没有理由需要执行
div\ID
,只需执行
\ID

现在来看动态部分:

$('.main-nav').find('span').on('click', function()
    {
        $('.page').hide(); //hide all the content
        $( $(this).attr('data-content') ).show(); //grab the reference we set up in data-cotnent and show that element.
    }
)};

首先,我会对您的html进行如下更改:

<nav class="main-nav">
    <ul>
        <li><span data-content="#home">Home</span></li>
        <li><span data-content="#work">Work</span></li>
        <li><span data-content="#contact">Contact</span></li>
    </ul>
</nav>
ID属性应该是唯一的,因此没有理由需要执行
div\ID
,只需执行
\ID

现在来看动态部分:

$('.main-nav').find('span').on('click', function()
    {
        $('.page').hide(); //hide all the content
        $( $(this).attr('data-content') ).show(); //grab the reference we set up in data-cotnent and show that element.
    }
)};

使用标记中的data-*属性:

HTML:

<nav>
    <ul>
        <li><span data-target="home"    id="home-btn">Home</span></li>
        <li><span data-target="work"    id="work-btn">Work</span></li>
        <li><span data-target="contact" id="contact-btn">Contact</span></li>
    </ul>
</nav>
$('nav ul li span').click(function(){
    var load = $(this).data('target');
    $('.page').hide();
    $('#'+load).show();
});

data-*适用于所有主要浏览器,包括旧版本的IE。

使用标记中的data-*属性:

HTML:

<nav>
    <ul>
        <li><span data-target="home"    id="home-btn">Home</span></li>
        <li><span data-target="work"    id="work-btn">Work</span></li>
        <li><span data-target="contact" id="contact-btn">Contact</span></li>
    </ul>
</nav>
$('nav ul li span').click(function(){
    var load = $(this).data('target');
    $('.page').hide();
    $('#'+load).show();
});

data-*适用于所有主要浏览器,包括旧版本的IE。

使用标记中的data-*属性:

HTML:

<nav>
    <ul>
        <li><span data-target="home"    id="home-btn">Home</span></li>
        <li><span data-target="work"    id="work-btn">Work</span></li>
        <li><span data-target="contact" id="contact-btn">Contact</span></li>
    </ul>
</nav>
$('nav ul li span').click(function(){
    var load = $(this).data('target');
    $('.page').hide();
    $('#'+load).show();
});

data-*适用于所有主要浏览器,包括旧版本的IE。

使用标记中的data-*属性:

HTML:

<nav>
    <ul>
        <li><span data-target="home"    id="home-btn">Home</span></li>
        <li><span data-target="work"    id="work-btn">Work</span></li>
        <li><span data-target="contact" id="contact-btn">Contact</span></li>
    </ul>
</nav>
$('nav ul li span').click(function(){
    var load = $(this).data('target');
    $('.page').hide();
    $('#'+load).show();
});


数据-*适用于所有主要浏览器,包括IE的旧版本。

是否有任何理由使用
$('.main nav')。查找('span')
<代码>$('.main nav span')
也能正确完成任务:)是的,两种方法都有效。但是我认为
.find()
更快(可以忽略不计)?是的,但如果在浏览器的更高版本中查看,选择器会更快,因此我必须说:)我是否也需要将相同的“数据内容”添加到浏览器中?我添加了,我将通过删除它们进行测试。不管怎样,这都奏效了,非常感谢!是否有任何理由使用
$('.main nav').find('span')
<代码>$('.main nav span')
也能正确完成任务:)是的,两种方法都有效。但是我认为
.find()
更快(可以忽略不计)?是的,但如果在浏览器的更高版本中查看,选择器会更快,因此我必须说:)我是否也需要将相同的“数据内容”添加到浏览器中?我添加了,我将通过删除它们进行测试。不管怎样,这都奏效了,非常感谢!是否有任何理由使用
$('.main nav').find('span')
<代码>$('.main nav span')
也能正确完成任务:)是的,两种方法都有效。但是我认为
.find()
更快(可以忽略不计)?是的,但如果在浏览器的更高版本中查看,选择器会更快,因此我必须说:)我是否也需要将相同的“数据内容”添加到浏览器中?我添加了,我将通过删除它们进行测试。不管怎样,这都奏效了,非常感谢!是否有任何理由使用
$('.main nav').find('span')
<代码>$('.main nav span')
也能正确完成任务:)是的,两种方法都有效。但是我认为
.find()
更快(可以忽略不计)?是的,但如果在浏览器的更高版本中查看,选择器会更快,因此我必须说:)我是否也需要将相同的“数据内容”添加到浏览器中?我添加了,我将通过删除它们进行测试。不管怎样,这都奏效了,非常感谢!