Jquery 面包屑新品种

Jquery 面包屑新品种,jquery,Jquery,基本上,这看起来很简单,我遵循了这个 当我从数据库中检索一些东西并在ulli元素上使用我自己的标准时,我面临一些问题 我的代码: <ol class="breadcrumb"> <liclass="item"><a href="#home">Home / </a></li> </ol> <div class="items"> <ul> <li><a href

基本上,这看起来很简单,我遵循了这个

当我从数据库中检索一些东西并在ulli元素上使用我自己的标准时,我面临一些问题

我的代码:

<ol class="breadcrumb">
    <liclass="item"><a href="#home">Home / </a></li>
</ol>

<div class="items">
   <ul>
     <li><a href="#test1">Test 1</a></li>
     <li><a href="#test1">Test 2</a></li>
        <ul>
            <li><a href="">Level 1</a></li>
            <li><a href="">Level 2</a></li>
        </ul>
     <li><a href="#test1">Test 3</a></li>
  </ul>
</div>


$('.items a')。在('click',function()上{
变量$this=$(this),
$bc=$('');
$this.parents('li')。每个(函数(n,li){
var$a=$(li).children('a').clone();
$bc.prepend('/',$a);
});
$('.breadcrumb').html($bc.prepend(''));
返回false;
}) 

我真的不擅长这个。如果有人提供帮助,我们将不胜感激。

如果有疑问,请使用console.log,然后按F12并转到console选项卡(我使用的是chrome)查看输出

在此处添加console.log后:

$bc = $('<div class="item"></div>');
console.log($this.parents('li'));
$bc=$('');
console.log($this.parents('li'));
我可以看到$this.parents('li')没有父母。基本上,这段代码试图做的是获取每个父li,并为每个li添加面包屑

尝试将其视为路径(例如Level 1锚定标记):

level1>父级为Li>父级为Ul>父级为Ul->父级为Div[class=“items”]


您的代码找不到任何li父级,因此无法确定创建了哪些级别。您必须遵循他们的html模式才能使其正常工作。

如果有疑问,请使用console.log,然后按F12键并转到console选项卡查看输出(我使用的是chrome)

在此处添加console.log后:

$bc = $('<div class="item"></div>');
console.log($this.parents('li'));
$bc=$('');
console.log($this.parents('li'));
我可以看到$this.parents('li')没有父母。基本上,这段代码试图做的是获取每个父li,并为每个li添加面包屑

尝试将其视为路径(例如Level 1锚定标记):

level1>父级为Li>父级为Ul>父级为Ul->父级为Div[class=“items”]


您的代码找不到任何li父级,因此无法确定创建了哪些级别。您必须遵循他们的html模式才能使其正常工作。

要保留html语法,请使用以下代码:

$('.items a').on('click', function() {
  var $this = $(this),
      $bc = $('<div class="item"></div>');
      $parent = $this.parent('li');

  var $a = $parent.children('a').clone();
  $bc.prepend(' / ', $a);  
  $parent.parents('li + ul').each(function(n, li) {
      console.log(li);
      var $a = $(li).prev().children('a').clone();
      $bc.prepend(' / ', $a);
  });
  $('.breadcrumb').html( $bc.prepend('<a href="#home">Home</a>') );
  return false;
}) 
$('.items a')。在('click',function()上{
变量$this=$(this),
$bc=$('');
$parent=$this.parent('li');
var$a=$parent.children('a').clone();
$bc.prepend('/',$a);
$parent.parents('li+ul')。每个(函数(n,li){
控制台日志(li);
var$a=$(li).prev().children('a').clone();
$bc.prepend('/',$a);
});
$('.breadcrumb').html($bc.prepend(''));
返回false;
}) 
如果您将每个“ul”紧跟在相应的“li”之后,它应该始终有效


要保留html语法,请使用以下代码:

$('.items a').on('click', function() {
  var $this = $(this),
      $bc = $('<div class="item"></div>');
      $parent = $this.parent('li');

  var $a = $parent.children('a').clone();
  $bc.prepend(' / ', $a);  
  $parent.parents('li + ul').each(function(n, li) {
      console.log(li);
      var $a = $(li).prev().children('a').clone();
      $bc.prepend(' / ', $a);
  });
  $('.breadcrumb').html( $bc.prepend('<a href="#home">Home</a>') );
  return false;
}) 
$('.items a')。在('click',function()上{
变量$this=$(this),
$bc=$('');
$parent=$this.parent('li');
var$a=$parent.children('a').clone();
$bc.prepend('/',$a);
$parent.parents('li+ul')。每个(函数(n,li){
控制台日志(li);
var$a=$(li).prev().children('a').clone();
$bc.prepend('/',$a);
});
$('.breadcrumb').html($bc.prepend(''));
返回false;
}) 
如果您将每个“ul”紧跟在相应的“li”之后,它应该始终有效


如果希望保留html语法,可以使用以下代码:

$('.items a').on('click', function() {
  var $this = $(this),
  $bc = $('<div class="item"></div>');

  $this.parents('ul').each(function(n, ul) {
      if ( $(ul).prev('li').length > 0 ) {
          var $a = $(ul).prev('li').children('a').clone();
          $bc.prepend(' / ', $a);
      }
  });
    $bc.append(' / ', $this.clone());
    $('.breadcrumb').html( $bc.prepend('<a href="#home">Home</a>') );
    return false;
}) 
$('.items a')。在('click',function()上{
变量$this=$(this),
$bc=$('');
$this.parents('ul')。每个(函数(n,ul){
如果($(ul).prev('li')。长度>0){
var$a=$(ul).prev('li').children('a').clone();
$bc.prepend('/',$a);
}
});
$bc.append('/',$this.clone());
$('.breadcrumb').html($bc.prepend(''));
返回false;
}) 

可以找到一个示例。

如果希望保留html语法,可以使用以下代码:

$('.items a').on('click', function() {
  var $this = $(this),
  $bc = $('<div class="item"></div>');

  $this.parents('ul').each(function(n, ul) {
      if ( $(ul).prev('li').length > 0 ) {
          var $a = $(ul).prev('li').children('a').clone();
          $bc.prepend(' / ', $a);
      }
  });
    $bc.append(' / ', $this.clone());
    $('.breadcrumb').html( $bc.prepend('<a href="#home">Home</a>') );
    return false;
}) 
$('.items a')。在('click',function()上{
变量$this=$(this),
$bc=$('');
$this.parents('ul')。每个(函数(n,ul){
如果($(ul).prev('li')。长度>0){
var$a=$(ul).prev('li').children('a').clone();
$bc.prepend('/',$a);
}
});
$bc.append('/',$this.clone());
$('.breadcrumb').html($bc.prepend(''));
返回false;
}) 

可以找到一个例子。

正如我上面提到的问题,我在
  • 上有我自己的标准正如我上面提到的问题,我在
    • 上有我自己的标准。有其他模式的方法吗?我在下面发布了另一个答案,以利用面包屑和您的语法。正如我上面提到的问题,我对
      • 有自己的标准。有其他模式的方法吗?我在下面发布了另一个答案,以利用面包屑和您的语法。兄弟,我需要一些与原始帖子不同的东西,我需要类似于
          • 的东西,请清楚地参考我的代码。@TooJUnitOrtCode。。更新了我的答案。。如果有帮助,请告诉我。如果我需要与原始帖子不同的东西,我需要类似于
              • 的东西,请清楚地参考我的代码。@TooJuniorToCode。。更新了我的答案。。如果有帮助,请告诉我