2013-02-03 64 views
2

的“id”属性我有jQuery Mobile的Web应用程序列表视图此列表视图作出这样的元素:的OnClick得到“A”标签

<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> 

我需要2件事情发生,一个是从“一”的标签分配这个特定的“礼”标签上的“ID” ATTR(点击一个)到我称为'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很陌生,所以我就问为什么这么荒谬的问题:)

+2

多个'id ='search_r''是一个** no-no **。 – Oleg

+1

['.live()'](http://api.jquery.com/live/)已弃用。改用['.on()'](http://api.jquery.com/on/)。 – Antony

+0

实际上尝试使用.on()没有运气。而在jQuery 1.8.2中,它工作得很好。 –

回答

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

.live从v1.7开始在jQuery中被弃用,并且在v1.9中被删除。

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

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

如果该元素存在于你要绑定的时候,你做这样的:

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

你甚至可以使用速记:

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

如果元素不会在时间存在,或者新的将被添加(这是.live已正常使用)的,你需要使用“事件代理”:

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

注意:您要绑定到最接近的静态元素,不总是document

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

1

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

你的目标是search_r

+0

现在这是非常重要的信息,非常感谢! –

+0

我想把这个值赋给全局变量:search_r,所以点击结果后,新页面将被打开,全局变量中的id将被用来加载这个新页面所需的数据。 –

+0

全局变量的作用域限于一个请求/响应。如果你需要保持比这个值更长的时间,你应该考虑像通过查询字符串将它传递到新页面,或者甚至改变一些东西来使用Ajax。 – dirn