2013-04-19 5 views
0

Я отправляю этот вопрос из-за того, что он длинный (это может создать путаницу, если я разрежу детали в нем). Я поставил вопрос более простым в этом сообщении :).Как захватить идентификатор щелкнутого div - jQuery

код JQuery: -

function op_prof(id) { 
    var attr_u_search = $(".u_search").attr('id'); 
    var dataString = 'u_search=' + attr_u_search; 
    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>"; 
}} 

У меня возникли проблемы с извлечением в ID каждого div (каждый из них имеет уникальный ID). Кажется, что jQuery захватывает IDdiv сверху (первый div) вместо того, чтобы захватывать ID s всех divs.

Снимки экрана: -
http://prntscr.com/118dhv
http://prntscr.com/118dus

PS: Я 100% уверен, что есть ошибка в JQuery: -> prntscr.com/118eb5

+0

вы можете сделайте это с помощью '$ ('div'). click (function() {alert ($ (this) .attr ('id'));})' –

ответ

2

Попробуйте изменить атрибут on-clicktr

Отсюда:

onclick='javascript:op_prof(1) 

Для этого:

onclick='javascript:op_prof(this)' 

И JS к этому:

function op_prof(obj) { 
    var attr_u_search = obj.id; 
    .... 
+1

Это полностью сработало! – Tom

0

Является первые пары из 'ob_prof' всегда = 1?

javascript:op_prof(1) 
+2

Для справок в будущем: это не ответ, это комментарий, как только вы приобрели> 50 репутации, вы сможете оставлять комментарии к другим ответам. –

+0

ОК, я понимаю – bbldzr

0

Метод attr() устанавливает или возвращает атрибуты и значения выбранных элементов.

Когда этот метод используется для возврата значения атрибута, он возвращает значение элемента FIRST.

использование $ .each()

api.jquery.com/jQuery.each/

1

Поскольку вы используете JQuery уже, вот полное решение JQuery:

$("tr.u_search").on("click", function() { 
    var attr_u_search = $(this).attr('id'); 
    var dataString = 'u_search=' + attr_u_search; 
    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(); 
     } 
    }); 
}; 
Смежные вопросы