获取网址的最后一部分

时间:2015-03-30 05:03:36

标签: javascript jquery

尝试在一个非常奇怪的html结构中获取url的最后一部分。不要问为什么它是这样构建的。背后有一个很好的理由。

html看起来像这样

<li class="lifilter"><input type="checkbox" class="filtercheck" id="Cheeks...">
   <label for="Cheeks...">
      <a href="/collections/cheeks">Cheeks</a>
   </label>
</li>

和js我试图使用

$('#Cheeks... label a').each(function(){
      var lasturl = $(this).attr('href');
      var urlsplit = url.split("/");
      var finalvar = urlsplit[4];
      $(this).addClass(finalvar);
});

编辑:该死的...我每90分钟只能发一次。 这里是更新的html

的更新问题
 <li class="lifilter">
    <input type="checkbox" class="filtercheck" id="Cheeks...">
    <label for="Cheeks...">
         <a href="/collections/cheeks" class="cheeks">Cheeks</a>
    </label>
 </li> 

和js代码我尝试使用(来自之前的回答)

$('.lifilter').each(function(){
      $(this).find(".filtercheck").next('label').find('a').each(function(){
         var lasturl = $(this).attr('href');
         var urlsplit = lasturl.split("/");
         console.log(urlsplit);
         var finalvar = urlsplit.pop();
         console.log('Adding class: ' + finalvar);
         $(this).addClass(finalvar);
      });
 });

5 个答案:

答案 0 :(得分:1)

好的,所以看来这里没有人试图在发布之前尝试解决方案。

首先是cheeks...。这是一个难以找到的ID(你必须逃避这段时间)。 label也不是ID为cheeks...的内部html的一部分,因此我们需要找到相邻的元素并查看您正在寻找的a锚标记。

以下是代码:

$(document).ready(function() {
    $('#Cheeks\\.\\.\\.').next('label').find('a').each(function(){
          var lasturl = $(this).attr('href');
          var urlsplit = lasturl.split("/");
         console.log(urlsplit);
          var finalvar = urlsplit.pop();
        console.log('Adding class: ' + finalvar);
          $(this).addClass(finalvar);
    });
});

here是解决问题的有效方法。

答案 1 :(得分:0)

保持简单,就像你要做的代码一样

finalvar = urlsplit[urlsplit.length-1];

如果您不希望基本网址作为有效回报,则:

finalvar = ( urlsplit.length > 1 ? urlsplit[urlsplit.length-1] : "" );

将“”替换为您首选的错误/默认回报

你也可以尝试找到最后一个'/'的索引并做一个子串。

答案 2 :(得分:0)

试试这个。

<强> FIDDLE DEMO

var URI = 'www.example.com/sub1/sub2/sub3/',
    parts = URI.split('/'),
    lastPart = parts.pop() == '' ? parts[parts.length - 1] : parts.pop();
//RESULT : "sub3"

答案 3 :(得分:0)

您可以使用正则表达式提取路径的最后一部分(即最后/之后的所有内容):

text.replace(/.*\//g, "")

这将删除斜杠前的所有文本,以及斜杠本身。您还会注意到您的选择器与任何元素都不匹配;您正在寻找嵌套在输入中的标签,这些标签与您发布的html不匹配(并且不是有效的DOM结构)。合适的选择器为.lifilter label a,因为<label>位于<li>内。

&#13;
&#13;
$(function() {
  setTimeout(function() {
    $('.lifilter label a').each(function() {
      // strip everything up to and including the last forward slash
      var path = $(this).attr('href').replace(/.*\//g, "");

      $(this).addClass(path);

    });
  }, 1500);
});
&#13;
a.cheeks:after {
  content: "  (className = 'cheeks')";
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<li class="lifilter">
  <input type="checkbox" class="filtercheck" id="Cheeks...">
  <label for="Cheeks...">
    <a href="/collections/cheeks">Cheeks</a>
  </label>
</li>
&#13;
&#13;
&#13;

答案 4 :(得分:0)

如果您想要网址的最后一部分,例如激活码 id 。可以尝试一下。

var url = 'www.abc.com/code=12345',
    parts = url.split('='),
    lastPart = parts.pop()

//lastPart = 12345