【问题标题】:jquery set href link on page loadjquery在页面加载时设置href链接
【发布时间】:2017-03-06 18:32:10
【问题描述】:

我有一个选项卡式菜单,其中显示来自不同 wordpress 类别的内容,例如汽车、卡车和公共汽车。每次重新加载页面时,它都会随机选择一个活动选项卡。在选项卡式菜单的内容底部,有一个“查看更多”按钮,链接到相应选定选项卡菜单的完整类别列表。问题是,每当我加载或重新加载页面时,查看更多按钮没有'不显示任何指向活动选项卡菜单的类别页面的链接。但是,当我手动单击另一个不应如此的选项卡菜单时,该链接会显示。请参阅下面选项卡式菜单的代码;

<ul id="myTab" class="nav nav-tabs">
<?php
$taxonomy = 'browse';
$queried_term = get_query_var($taxonomy);
$terms = get_terms($taxonomy, 'slug='.$queried_term);
$items = array("1","2","3");
$array_val = $items[array_rand($items)];
if ($terms) {
    $j = 1;
    foreach($terms as $term) {
        $termname = $term->name;
        $termslug = $term->slug;
        if($j == $array_val){
?>
<li data-id="<?php echo trim($termslug);?>" class="active"><a data-toggle="tab" data-target="#m-<?php echo trim(str_replace('/','',$termname));?>" aria-expanded="false"><?php echo trim($termname);?></a></li>
<?php 
        } else { 
?>
<li data-id="<?php echo trim($termslug);?>"><a data-toggle="tab" data-target="#m-<?php echo trim(str_replace('/','',$termname));?>" aria-expanded="false"><?php echo trim($termname);?></a></li>
<?php 
        }
        $j++;
    } 
}
?>                  
</ul>

在选项卡式菜单内容的底部,这是“查看更多”按钮的代码,该按钮链接到下面相应的选定选项卡菜单;

<a href="" class="nymcls">
    <input type="submit" value="View More" class="btnclass">
</a>

这是 jquery 代码,似乎只有在我单击选项卡式菜单时才有效。我希望它在页面加载时也分配随机选择的选项卡式菜单的相应链接。

<script> 
$(document).ready(function() {   
    $("#myTab li").click(function() {
        var templateDir = '<?php echo site_url(); ?>/';         
        var catname = $(this).data("id");
        var cat = "browse/"
        $('a.nymcls').each(function() {
            ($(this).attr('href', templateDir + cat + catname +'/?top_rate=yes'));  
        });
    });
});
</script>

【问题讨论】:

    标签: javascript php jquery html wordpress


    【解决方案1】:

    您还需要调用更新链接的函数,在页面加载时也是如此。不仅是用户点击它们

    function updateMoreLink( catname ){
        var templateDir = '<?php echo site_url(); ?>/'; 
    
        var cat = "browse/"
    
        $('a.nymcls').each(function() {
            ($(this).attr('href', templateDir + cat + catname +'/?top_rate=yes'));
        });
    }
    
    $(document).ready(function(){
    
        $("#myTab li").click(function(){
            updateMoreLink($(this).data("id"));
        });
    
        updateMoreLink( $("#myTab li.active").data("id") );
    
    });
    

    【讨论】:

    • 我尝试了您的代码,并且该链接现在显示,但它在按钮的 url 中显示未定义。我需要重命名 updateMoreLink() 还是按原样使用它?
    • 我更新了我的答案。如评论中所述,您需要知道页面首次加载的 category_name 。使用上面提供的代码,我无法提取此信息
    • 到目前为止非常感谢。但是如何确定页面第一次加载的 category_name 呢?
    • 非常感谢。它在主页上完美运行,尽管它仍然在类别页面中显示未定义。
    • 你能说得更具体点吗?究竟什么显示为未定义?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-11
    • 2015-05-05
    • 2011-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多