2013-04-19 2 views
1

Я пытался получить идентификатор щелкнуло div из же классов но с различными идентификаторами. Я попробовал все, что знаю.

Вот один код, который я попробовал (в этом, .click function() не работает .. редактирование: это означает, что, кажется, не запускать код при нажатии на всех!): -Как получить идентификатор щелкнул сОн JQuery

$(".u_search").click(function() { 
    var attr_u_search = $(this).attr('id'); 
    var dataString = '&u_search=' + $(".u_search").attr('id'); 
    alert(dataString); 

    $.ajax({ 
    type: "POST", 
    url: '/script/profile.php', 
    data: dataString, 
    cache: false, 
    success: function(data) { 
      $('#ui_profile').show(); 
      $('#ui_profile').html(data); 
      location.hash = 'profile' + 'id=' + dataString; 
      $(".searchbox").val(''); 
      $("#usr_suggest").hide(); 

    } 
    }); 
}); 

PHP : -

echo "<tr id='" . $id . "' class='u_search' height='40px'><td width='40px'><img class='avatar' src='$avater' /></td><td>" . $fname_ . " " . $lname_ . "</td></tr>"; 
}} 


Вот другая комбинация кодов я пытался ( ошибка в этом одном: предположим, у меня есть 5 divs, и даже если я нажал 2-й div или 3-й div, он фиксирует только идентификатор первого div [ div 1], а не щелчок div. Я хочу, чтобы иметь возможность захвата идентификатор щелкнули div): -.

$(".u_search").click(function() { 
    var attr_u_search = $(".u_search").attr('id'); 
    var dataString = '&u_search=' + $(".u_search").attr('id'); 
    alert(dataString); 

    $.ajax({ 
    type: "POST", 
    url: '/script/profile.php', 
    data: dataString, 
    cache: false, 
    success: function(data) { 
      $('#ui_profile').show(); 
      $('#ui_profile').html(data); 
      location.hash = 'profile' + 'id=' + dataString; 
      $(".searchbox").val(''); 
      $("#usr_suggest").hide(); 

    } 
    }); 
}); 

PHP: -

echo "<tr id='" . $id . "' class='u_search' height='40px' onclick='javascript:op_prof(1)'><td width='40px'><img class='avatar' src='$avater' /></td><td>" . $fname_ . " " . $lname_ . "</td></tr>"; 
}} 

редактировать: когда я использую первый код (один с .click function()) код вообще не работает! .. Я с использованием библиотеки версии 1.9.1

+0

какая версия jquery вы используете? – Oussama

+0

'$ (". U_search "). Attr ('id')' будет [всегда возвращать идентификатор элемента * first *] (http://api.jquery.com/attr/) с этим классом. Использует ли '$ (this) .attr ('id')' (т. Е. Ваш 'attr_u_search') то, что вы хотите? – cmbuckley

+0

jquery version 1.9.1 (предоставлено google) – Tom

ответ

0

я думаю, что это: $(this).attr('id') Вы должны использовать $ (это), чтобы объект, который щелкнули ..

var attr_u_search = $(this).attr('id'); 
var dataString = '&u_search=' + attr_u_search; // it's better ! 
+0

тот же комментарий, что и MMM .... – Oussama

+0

Я уже ответил;) – KLK1

+0

внимательно прочитал вопрос, прежде чем отвечать ... он уже использовал ваш ответ – Oussama

0

Когда вы

$(".u_search").click(function() {... 

Функция обратного вызова теперь имеет объект, называемый this. Вы можете использовать его для получения фактического объекта, который вы нажали.Таким образом, в этом случае, если вы хотите получить идентификатор щелкнули объекта, просто сделать это:

var the_id = $(this).attr("id"); 
+0

кажется, что вы еще не прочитали вопрос ... он использует 'var attr_u_search = $ (this) .attr ('id');' – Oussama

+0

Я думаю, что кто-то редактировал вопрос. – MMM

+0

Разве это не то, что я сделал в первом коде? – Tom

0

Внутри функции, вы можете ссылаться на активный объект JQuery с помощью $ (это)

$(".u_search").click(function() { 
... 
//get ID of button being clicked upon 
//Jquery Solution 
$(this).attr('id'); 

//Or Javascript 
    this.id; 
... 
} 
+0

тот же комментарий, что и MMM и KLK1 ... внимательно прочитайте вопрос ... – Oussama

+0

Вопрос был отредактирован, поэтому некоторые люди предоставили этот ответ. – MMM

+0

Действительно, «отредактировал 20 секунд назад». Теперь проверьте его. – Mysteryos

0
$("div").on("click",function(){ 
    var id = this.id; //returns id 
    }); 
+0

Это не сработало .. извините! – Tom

0
var attr_u_search = $(this).attr('id'); 
var dataString = '&u_search=' + $(".u_search").attr('id'); 

Вы выбираете каждый u_search снова деление с построить свой datastring, вместо того, чтобы использовать уже сгружен ID:

var attr_u_search = $(this).attr('id'); 
var dataString = '&u_search=' + attr_u_search; 
+0

это не работает .. извините – Tom

0

Попробуйте это:

$('body').on('click', '.u_search', function() { 
    var attr_u_search = $(this).attr('id'); 
    var dataString = '&u_search=' + attr_u_search; 
    alert(dataString); 
    // REST OF CODE 
}); 

(Протестировано и работает, если он по-прежнему не работает, то проблема может быть в другом месте)

+0

это не сработал .. извините! – Tom

+0

убедитесь, что вы включили JQuery перед кодом и код появился после html – Oussama

1

Внутри вашего изменения функции

$('.u_search').attr('id') 

Для

$(this).attr('id') 

Кавычки важны, но t его нет внутри кавычек;)

0
$('body').delegate('.u_search', 'click', function() { 
    var attr_u_search = $(this).attr('id'); 
    var dataString = '&u_search=' + attr_u_search; 
    alert(dataString); 
}); 
+0

Извините, но это не сработало – Tom

+0

Попробуйте предупредить значение attr_u_search –

+0

первых кодов dont work вообще. второй показывает идентификатор первого div как предупреждение ... – Tom

Смежные вопросы