2013-11-19 2 views
0

я следующий HTML:Как найти конкретную ссылку в данном сНе JQuery

<div class="ally_request_container" data-type="ally" field-id="<?=$random_id;?>"> 
    <span class="ally_request_label">Request</span> 
    <a class="ally_request" data-type="accept" href="#">Accept</a> 
</div> 

Я хочу, чтобы иметь возможность изменить ссылки типа данных = «принимать» для типа данных = "удалить ", и измените текст ссылки с Accept на Remove, в зависимости от того, какую ссылку я нажимаю, может быть 100, поэтому я использую идентификатор поля родительского div, чтобы настроить то, что я нажимаю.

Как мне найти и изменить упомянутый?

Я получил следующее, что я использую, чтобы получить ответ JSON для поля-ID:

$(document).ready(function(){ 
    $(".ally_request").click(function(){ 
     var type = $(this).parent().attr('data-type'); 
     var this_type = $(this).attr('data-type'); 
     var field_id = $(this).parent().attr('field-id'); 
     var find = $("div").find("[field-id='" + field_id + "']"); 
     var position = find.position(); 

     alert('Type '+type); 
     alert('This Type '+this_type); 
     alert('Field ID '+field_id); 
     alert('Find '+find); 
     alert('Position '+position); 

     switch(type){ 
      case 'ally': 
       switch(this_type){ 
        case 'accept': 
        $.getJSON('json.php', {action:'ally.accept',ally_id:field_id}, function(response){ 
         if(response.status == 200){ 
          var result = response.message; 

          //To reset the title and link data type 
          //change link data-type and text here 
         } 
         else{ 
          alert(response.message); 
         } 
        }); 
        break; 
        default: 
         alert('Unknown Accept Result.'); 
        break; 
       } 
      break; 
      default: 
       alert('Unknown Search Result.'); 
      break; 
     } 
     return false; 
    }); 
}); 

ответ

1

Вы не можете использовать ссылку this внутри обработчика успеха, так как контекст выполнения обработчика успеха отличается, используйте вместо переменной закрытия.

Попробуйте

$(document).ready(function() { 
    $(".ally_request").click(function() { 
     var $this = $(this), 
      $parent = $this.parent(); 

     var type = $parent.attr('data-type'); 
     var this_type = $this.attr('data-type'); 
     var field_id = $parent.attr('field-id'); 
     var find = $("div").find("[field-id='" + field_id + "']"); 
     var position = find.position(); 

     alert('Type ' + type); 
     alert('This Type ' + this_type); 
     alert('Field ID ' + field_id); 
     alert('Find ' + find); 
     alert('Position ' + position); 

     switch (type) { 
      case 'ally': 
       switch (this_type) { 
        case 'accept': 
         $.getJSON('json.php', { 
          action: 'ally.accept', 
          ally_id: field_id 
         }, function (response) { 
          if (response.status == 200) { 
           var result = response.message; 

           $this.attr('data-type', 'remove').text('Remove') 
           //To reset the title and link data type 
           //change link data-type and text here 
          } else { 
           alert(response.message); 
          } 
         }); 
         break; 
        default: 
         alert('Unknown Accept Result.'); 
         break; 
       } 
       break; 
      default: 
       alert('Unknown Search Result.'); 
       break; 
     } 
     return false; 
    }); 
}); 
+0

большие приветствий ответ, «Вы не можете использовать эту ссылку:» Я думал, что-то не так! – cwiggo

0

добавить это в коде обработчика щелчка:

$(this).attr('data-type', 'remove'); 
0

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

Добавить селектор в элемент, затем доступ

<a id="test" class="ally_request" data-type="accept" href="#">Accept</a> 

Изменение типа данных

$('#test').data('type','remove'); 

Изменение текста

$('#test').text('Remove'); 
Смежные вопросы