5

所以,简而言之,我有一套 .li

<ul>
  <li class="lmit_1"><a href="#" >Home</a></li>
  <li class="lmit_2"><a href="#">About us</a></li>
  <li class="lmit_3"><a href="#">Who we are</a></li>
  <li class="lmit_4"><a href="#">Whats new</a></li>
  <li class="lmit_5"><a href="#">Contact Us</a></li>    
</ul>

和我的 javascript (jQuery)

<script>
  $(".lmit_" + id).click(function () {
    alert(id);
  });
</script>

我想要做的是接收css类末尾的任何数字作为参数(例如.lmit_3将允许id = 3),因此alert(id)应该导致弹出数字3?我对编程和javascript都是新手,所以如果答案让我眼前一亮,我深表歉意......

4

6 回答 6

4

演示:http: //jsfiddle.net/sFwZj/1/

$('li').click(function () {
  alert($(this).attr('class').split('_')[1]);
});

在您的代码中,您使用未声明的变量调用,因此当您尝试时id它应该抛出错误。ReferenceError: id is not defined".lmit_" + id

而且我认为你不应该使用id这个class,也正如提到的那样,如果你将数字存储在data-id属性中会更好,那么你可以通过$(this).data('id').

于 2012-09-06T03:52:25.553 回答
1
$("li").click(function () {
  alert(this.className.split('_')[1]);
});

应该这样做

但为什么不

    <ul>
     <li class="lmit" id="lmit_1"><a href="#" >Home</a></li>
     <li class="lmit" id="lmit_2><a href="#">About us</a></li>

$(".lmit").click(function () {
  alert(this.id.split('_')[1]);
})
于 2012-09-06T03:57:05.913 回答
1

最好将要使用的任何数据存储在数据属性中。这样,您就不会过于依赖类和 id(以及字符串处理),并且在格式和功能之间有一些分离。

您的 html 将如下所示:

 <ul>
<li class="lmit" data-myattr="1"><a href="#" >Home</a></li>
<li class="lmit" data-myattr="2"><a href="#">About us</a></li>
</ul>

请注意,data-myattr 可以被称为任何带有“data-”前缀的东西。

访问您的数据

       $(".lmit").click(function(){
//you can access it as an attribute
        alert($(this).attr("data-myattr"));
//or you can access it as data
           alert($(this).data("myattr"));
        })

或者对于更无类的解决方案,使用事件委托

$("ul").delegate("li", "click", function() {
 alert($(this).data("myattr"));
});

所以你的 html 中根本不需要 lmit 类

 <ul>
<li data-myattr="1"><a href="#" >Home</a></li>
<li data-myattr="2"><a href="#">About us</a></li>
</ul>
于 2012-09-06T04:04:28.737 回答
0
$('[li][class^="lmit_"]').click(function () {
  alert($(this).attr('class').split('_')[1]);
});

如果你使用 $('li') 如果你点击任何 li 它没有“limit_”类也将被解雇。

于 2012-09-06T06:03:26.617 回答
0

尝试这个

$('ul li').on('click', function(){
    alert($(this).prop('class').split('_')[1]);
});
于 2012-09-06T04:00:55.387 回答
0

上面的答案都是正确的。如果您想获取 中的项目编号<ul>,您还有其他选择。

$('li').click(function() {
    alert($(this).index()+1);
});

好处是您不必生成类名(如果这就是它们的全部用途)

于 2012-09-06T04:07:35.173 回答