OnClick获取“a”标签的“id”属性

时间:2013-02-03 15:01:51

标签: javascript jquery html5 events jquery-mobile

我在jQuery Mobile网络应用程序中有列表视图,此列表视图由以下元素组成:

<li id='search_r'>
    <a href='#' id='$id' class='s_result'></a>
</li>
<li id='search_r'>
    <a href='#' id='$id' class='s_result'></a>
</li>

元素数量取决于搜索结果的数量,它不仅仅是这两个。 当我在列表视图中单击元素时,在这种情况下:

<li></li>

我需要做两件事,一件是将“id”attr从这个特定“li”标签(点击的标签)中的“a”标签分配给我称之为“search_r”的全局变量。点击事件工作正常,但要从“a”标签获取属性,我无法做到。

这是我的js:

$("#cc_page").ready(function(){
  $("#search_r").live('click', function(){
      search_r = $(this).attr('id');
      window.location.href = "http://imes.********.com/app/userpanel.html#sfpp_page";
  });
});

我知道“这个”不是解决方案。我真的很喜欢js所以这就是为什么我会问这么荒谬的问题:)

3 个答案:

答案 0 :(得分:3)

您遇到的第一个问题是重复的search_r id属性,这是无效的。这些应该改为类。此外,您应该将on()与委托处理程序一起使用,因为live()已从最新版本的jQuery中删除。试试这个:

<li class='search_r'>
    <a href='#' id='$id' class='s_result'></a>
</li>
<li class='search_r'>
    <a href='#' id='$id' class='s_result'></a>
</li>
$("#cc_page").on('click', '.search_r', function(){
    var search_r = $('a', this).attr('id');
    console.log(search_r); // just to check it works

    // I assume this is just for testing, otherwise leaving the page 
    // immediately on click renders getting the id completely moot.
    //window.location.href = "http://imes.********.com/app/userpanel.html#sfpp_page";
});

我还假设你的HTML中的$id来自某种形式的模板引擎,它被解释了吗?如果没有,那些也需要独特。

答案 1 :(得分:1)

自v1.7以来,

.live已在jQuery中弃用,并已在v1.9中删除。

您应该将其替换为.on()

.on有2个绑定元素的语法,而.live只有1个。

如果绑定时元素存在,则按以下方式执行:

$('.element').on('click', function(){
    .......
});

您甚至可以使用简写:

$('.element').click(function(){
    .........
});

如果该元素当时不存在,或者将添加新元素(通常用于.live),则需要使用“事件委托”:

$(document).on('click', '.element', function(){
    .............
});

注意:您希望绑定到最近的静态元素,而不是document

与此同时,如果将jQuery升级到最新版本,jQuery Migrate plugin可用于恢复.live()功能。

答案 2 :(得分:1)

window.location.href会导致浏览器发出新请求。加载新页面时,将重置任何变量。

search_r的目标是什么?