2015-05-05 2 views
0

У меня проблема с моим кодом:Jazzcript целевой атрибут undefined

Я создаю уведомление о принятии запроса друга. Затем я могу выбирать между тремя действиями (принимать, отказываться или блокировать).

HTML

<div class="pull-right"> 
    <a href="#" title="{{_ "notifications.accept"}}" id="ok-btn" name=" {{data.talkmateId}}"> 
     <span class="glyphicon glyphicon-ok-circle" id="ok-sign" aria-hidden="true"> </span> 
    </a> 
    <a href="#" title="{{_ "notifications.remove"}}" id="remove-btn" name="{{data.talkmateId}}"> 
     <span class="glyphicon glyphicon-remove-circle" id="remove-sign" aria-hidden="true"> </span> 
    </a> 
    <a href="#" title="{{_ "notifications.block"}}" id="block-btn" name="{{data.talkmateId}}"> 
     <span class="glyphicon glyphicon-remove-sign" id="block-sign" name="{{data.talkmateId}}" aria-hidden="true"> </span> 
    </a> 
    </div> 

Meteor.Js

Template.navigation.events({ 
'click #block-btn': function(e, tmpl){ 
     var friendList = Meteor.user().profile.friends; 
     var usrId = e.target.id; 
     var i = 0; 
     console.log(e.target.id); 
     console.log(friendList); 
     /*for(i = 0; i < friendList.length; i++){ 
     if(friendList[i].id == usrId){ 
      console.log(i); 
      friendList.splice(i, 1); 
      break; 
     } 
     } 
     console.log(friendList); 
     Meteor.users.update({_id: Meteor.userId()}, { 
     $set: { 
      'profile.friends': friendList 
     }}); 
     Meteor.users.update({_id: Meteor.userId()}, { 
     $push: { 
      'profile.blocked': usrId 
     } 
     });*/ 
     //Meteor.call('removeNotif', Meteor.user()._id, this.id); 
    } 
    }); 

Проблема в том, что независимо от того, что я пытался, я никогда не получить то, что я хочу. Целью является то, что когда я принимаю или блокирую или удаляю какой-либо объект, я меняю статус друга и/или удаляю его из своего профиля и/или добавляю его в список заблокированных.

Но каждый раз я не могу, так как напечатанный номер e.target.id является одним из пролетов, а не номером <a></a>. Я попытался передать идентификатор пользователя в атрибуте name, но он не работает, а журнал печатает только «undefined».

Я пытался получить его из data- атрибута тоже, но у меня вопрос для каждого, как я к нему доступ (JQuery .data(), HTML5 .dataset или ванильный JS .getAttribute("data-").

провел свою ночь на этом, не мог» т найти реальное решение может кто-то наставит меня

Спасибо вам

+0

вы пробовали с ATTR() – madalinivascu

+0

использовать 'данные()' вам нужно вы приписывать быть 'данных- *' – madalinivascu

+0

попробуйте изменить '# блок-btn' для' в # блок-btn' – madalinivascu

ответ

1

вы можете превратить event.target объект в объект JQuery, а затем использовать селекторы на него, чтобы получить его родителей, используя jQuery.parent(), например, так:.?

var $target = $(event.currentTarget); 
var $parent = $target.parent(); // gets you the `a` tag as a jQuery object 
var parentId = $parent.attr('id'); 
var parentTalkmate = $parent.attr('name') 

Вы можете поиграть с этим с помощью this simple fiddle.

+0

Да, я попробовал это как раз перед тем, чтобы увидеть ваш ответ, он, наконец, работает, спасибо :) Но не могли бы вы объяснить мне, почему e.target не возвращает < a >< /a >, как и для большинства моих обработчиков событий ?? –

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