用另一个替换段落

时间:2012-12-06 16:10:26

标签: jquery css html-lists

这就是我追求的目标。

我需要每个LI替换名为“moreInfo”的div中的当前段落。

到目前为止,我已尝试为每个li提供一个ID,并且每个附加段落都设置为不显示。 我已经设置了一个默认段落并在点击任何标签(LI)之前显示它。

<ul class="sideLinks">

    <li id="sideLink1">
        <a href="" >Favorites</a>
    </li>

    <li id="sideLink2">
        <a href="">Scope</a>
    </li>

    <li id="sideLink3">
        <a href="">Concierge</a>
    </li>

    <li id="sideLink4">
        <a href="">Share</a>
    </li>

    <li id="sideLink5">
        <a href=""> Reminders</a>
    </li>
</ul>

这是我到目前为止为jQuery设置的,但是由于某些奇怪的原因我在第一个链接上收到错误。

$(document).ready(function(){
    $('li#sideLink1').click(function () {
        event.preventDefault();
        $('#moreinfo').html($("p#favorites"));
    });
});

任何帮助将不胜感激!谢谢!

5 个答案:

答案 0 :(得分:1)

您没有定义event。改写为:

$("#sideLink1").click(function (event) { ...

另请注意,如果您使用ID,则不需要将元素名称作为选择器的一部分。它甚至可能会降低选择器的速度。

答案 1 :(得分:0)

缺少参数。您需要在函数

中传递event
$('li#sideLink1').click(
    function (event) {
    event.preventDefault();
    $('#moreinfo').html($("p#favorites"));

});

答案 2 :(得分:0)

jQuery(function($){
    $('li#sideLink1').click(function (event) {
        event.preventDefault();
        $('#moreinfo').html($("p#favorites").html());
    });
});

.html()接受字符串作为参数,而不是jQuery对象。

答案 3 :(得分:0)

您获得的错误可能是因为您没有将事件对象传递给匿名函数。

$('li#sideLink1').click(
    function(event) {
        event.preventDefault();
        $('#moreinfo').html($("p#favorites"));
    }
);

也就是说,LI标签没有默认操作来阻止和给出提供的代码,锚标签仍然会有默认操作。您可能希望将单击操作放在锚标记上。

答案 4 :(得分:0)

事件参数缺失,但我不认为这完全解决了这个问题。这是一个完整的标记和我相信你想要完成的例子。

http://jsfiddle.net/psyon001/zjQy7/

我使用了锚点,所以如果禁用了js,你可以在显示块中添加一个no-js类定义,链接将锚定到文本,使其更优雅地降级。

<style>
    #moreInfo p{display:none;}
    #moreInfo p#default{display:block;}
</style>

-

<ul class="sideLinks">
    <li>
        <a href="#favoritesDetail">Favorites</a>
    </li>
    <li>
        <a href="#scopeDetail">Scope</a>
    </li>
    <li>
        <a href="#conciergeDetail">Concierge</a>
    </li>
    <li>
        <a href="#shareDetail">Share</a>
    </li>
    <li>
        <a href="#remindersDetail">Reminders</a>
    </li>
</ul>
<div id="moreInfo">
    <p id="default"></p>
    <p id="favoritesDetail">Favorites description...</p>
    <p id="scopeDetail">Scope description...</p>
    <p id="conciergeDetail">Concierge description...</p>
    <p id="shareDetail">Share description...</p>
    <p id="remindersDetail">Reminders description...</p>
</div>

-

<script>
$('.sideLinks').find('a').on('click', function(e){
    e.preventDefault();
    var $moreInfo = $('#moreInfo'),
        id = $(this).attr('href');
    $moreInfo.find('p').hide();
    $moreInfo.find(id).show();
});​
</script>