检索在jquery中单击的对象的id

时间:2014-02-10 04:40:14

标签: jquery

var ul = $(".display-movie");
for (var i = 0 ; i < response.movies.length; i++) {
    var img = $("<img>").attr("src", response.movies[i].posters.thumbnail)
                .css("width", "200px")
                .css("height", "200px")
                .css("margin", "20px")
                .click(click_pressed);
    var text = response.movies[i].title;
    var row = $("<li> <div>");
    var endrow = $("</div> </li>");
    ul.append(row , img , text , endrow);

在上面的代码中,点击功能运行良好,并显示和提醒。但我想要的是,当点击时,警报应显示被点击的对象的ID,以便稍后我可以使用其ID检索此对象的详细信息。

function click_pressed() {
    alert($(this.title));
}

4 个答案:

答案 0 :(得分:3)

要显示id,您只需从this指针引用该属性,该指针将指向导致该事件的DOM对象。

function click_pressed() {
    alert(this.id);
}

您的问题是“id”,但您的代码看起来像是您想要的标题。在这种情况下,您将使用:

function click_pressed() {
    alert(this.title);
}

您不需要在事件处理程序中使用jQuery来访问DOM对象的属性。如果你想在click项上使用其他jQuery方法,你可以使用$(this)为点击项创建一个jQuery对象,然后你可以做其他事情,比如$(this).find("xxx")或其他任何jQuery方法你需要。但是,要只访问DOM对象的常规属性,不需要jQuery。

答案 1 :(得分:0)

this指的是事件所针对的dom元素,请尝试

function click_pressed() {
    alert(this.id);//alerts id
    var $this = $(this);
    //then use $this to access other jQuery methods
}

您不需要单击元素的id来访问其他属性,因为您可以使用dom元素引用来获取相应的jQuery对象

答案 2 :(得分:0)

您可以更好地使用onclick函数,并可以像这样发送当前元素的属性值

<img id="abc" onclick="yourfunction(this.id)">

因此,此函数会将id值作为“abc”发送到您的函数。

你的进一步JS功能将是这样的

function yourfunction(id) 
{
}

答案 3 :(得分:0)

我不知道您是否需要此功能(JSFIDDLE也不错),因为您将.on('click'...)作为.click()的长版本附加到<img/>,但如果您需要在更复杂的结构中单击的实际元素,则可以使用

click_pressed = function(e) { console.log($(e.target)) }

$('div').click(function(e){
  click_pressed.call(this, e)
  console.log($(this))
}) 

JSFIDDLE:http://jsfiddle.net/23uGK/1/

  

call()方法使用给定的值和单独提供的参数调用函数。 MDN

其他一切都说了,你必须用其他人提供的方法检索title! :)

*解决方案实际上是KevinB找到了here的礼貌。