2012-04-30 6 views
6

otworzyć Mam następujący kodjak uzyskać identyfikator do okna dialogowego

<td><a href="#" id="dialog_link-19" class="ui-state-default ui-corner-all">Click here</a></td> 
<td><a href="#" id="dialog_link-25" class="ui-state-default ui-corner-all">Click here</a></td> 
<td><a href="#" id="dialog_link-33" class="ui-state-default ui-corner-all">Click here</a></td> 
<td><a href="#" id="dialog_link-556" class="ui-state-default ui-corner-all">Click here</a></td> 

#dialog_link są generowane dynamicznie.

w moim js muszę wiedzieć, który został kliknięty.

To jest mój js

$('#dialog').dialog({ 
      autoOpen: false, 
      width: 600, 
      buttons: { 
       "Ok": function() { 
        $(this).dialog("close"); 
       }, 
       "Cancel": function() { 
        $(this).dialog("close"); 
       } 
      } 
     }); 

     // Dialog Link 
     $('#dialog_link').click(function(){ 
      $('#dialog').dialog('open'); 
      $.ajax({ 
        url: "teams/pp", 
        type: "POST", 
        data: 
        success: function(data){ 

        console.log(data); 

        } 

       }); 

      return false; 
     }); 
+1

jestem zdezorientowany. Gdzie w tym kodzie musisz wiedzieć, które pole zostało kliknięte? A jeśli identyfikator jest generowany automatycznie, robi ("#dialog_link"). Kliknij coś zrób? Wygląda na to, że nigdzie się to nie wyda – Ryan

Odpowiedz

4

można uzyskać identyfikator ten, który został kliknięty liek to:

$('a[id*=dialog_link]').click(function(){ 
    var id = $(this).attr('id'); 

    console.log(id); 
}); 
9

użytkowania id^ zamiast id*, id^ stosuje się do wskazania, że ​​id rozpoczynających z podanym tekstem i id* pasuje, jeśli podany tekst jest dostępny w id, gdziekolwiek nawet w końcu taki jak id1-dialog_link:

$("td a[id^='dialog_link']").click(function(){ 
    var id = $(this).prop('id'); 
    console.log(id); 
}); 

Tutaj a[id^='dialog_link'] dopasuje dialog_link-19 ale nie id1-dialog_link.

+0

Czy to jest coraz bardziej upvotes niż moje z powodu użycia propu? Myślę, że ludzie nie rozumieją, kiedy należy zastosować rekwizyt. Prosto ze strony prop() JQuery: Na przykład selectedIndex, tagName, nodeName, nodeType, ownerDocument, defaultChecked i defaultSelected powinny zostać pobrane i ustawione za pomocą metody .prop(). Przed wersją jQuery 1.6 właściwości te można było odzyskać za pomocą metody .attr(), ale nie mieściło się to w zakresie atr. Nie mają odpowiednich atrybutów i są tylko właściwościami. – Evan

+0

Myślę, że jest inna różnica w naszych odpowiedziach i jest to ciąg selektora, użyłeś '$ ('a [id * = dialog_link]')' oznacza, że ​​każdy id zawierający słowo 'dialog_link' w dowolnym miejscu w id i moje jest' $ ('a [id^= dialog_link]') 'oznacza tylko identyfikatory zaczynające się od słowa' dialog_link'. –

2

ten powinien powrócić liczba link kliknął:

$('a[id*=dialog_link]').click(function() { 
    var id = $(this).attr('id').replace('dialog_link-',''); 
    alert(id); 
}); 

Demo

Użyłem funkcji .replace() usunąć tekst