2013-03-18 3 views
0

У меня есть этот HTML код:захватить заголовок значение с помощью родителя()

<a class="ms-navedit-linkNode" title="Apps" href="url/test"> 
    <span class="menu-item-text">Apps</span> 
</a> 

Я хочу, чтобы изменить значение заголовка от «приложения» к чему-то еще.

Вот javascript, который я использую, но он просто дает переменную названия undefined.

Примечание: Все остальное прекрасно работает в моем коде JS

<script type="text/javascript"> 
    $(document).ready(function() { 
     $(".menu-item-text").each(function() { 
      var text = $(this).text(); 
      if (text == "Apps") { 
       $(this).text(""); 
       $(this).text("Organization"); 

       var title = $(this).parent().attr("title"); 

       if (title == "Apps") { 
        $(this).parent().attr("title", "Organization"); 
       } 
      } 
     }); 
    }); 
</script> 

Я делаю что-то здесь не так?

+0

ли проблема с чтением или обновлением? Можете ли вы сбросить «отладчик»? строка сразу после присвоения титула? Вы также используете капитализированный «Attr» в $ (this) .parent(). Attr («title», «Test»); – Gopherkhan

+6

'' теги не имеют атрибута 'value', поэтому' $ (this) .val (""); 'ничего не делает. Кроме того, это 'parent(). Attr (', с нижним регистром 'a'. Вы пытались отладить это самостоятельно или даже посмотреть на консоль JavaScript? Вы также не видите' '' in 'class = «menu-item-text'. –

+0

, поэтому в вашем примере вы хотите изменить« Приложения »в« Организация »? –

ответ

2

Ваш HTML отсутствует кавычку

<a class="ms-navedit-linkNode" title="Apps" href="url/test"> 
    <span class="menu-item-text">Apps</span> 
</a> 

Вы также имели капитал А на Attr. Это должно быть:

$(".menu-item-text").each(function() { 
    var text = $(this).text(); 
    if (text == "Apps") { 
     $(this).text("Organization"); 

     var title = $(this).parent().attr("title"); 
     alert($(this).parent().attr("title")); 

     if (title == "Apps") { 
      $(this).parent().attr("title", "Test"); 
      alert($(this).parent().attr("title")); 
     } 
    } 
}); 

Я поставил оба предупреждения, чтобы предупредить атрибут title до и после его изменения.

Fiddle: http://jsfiddle.net/VinnyFonseca/x8ceZ/

+0

Thats weird Я изменил с A на a, и он все еще не работает, и здесь был написан html-код:> нет ничего плохого в этом – Obsivus

+0

О, ну, есть еще один элемент вокруг пролета. Мне нравится, как Sharepoint генерирует элементы:> – Obsivus

+0

Также, как и в других комментариях, и я согласен, удалите строку val (""). Ред. –

1

Вы почти там. Вот fiddle.

Изменения:

  1. $(this).val(""); в $(this).text(""); (вы можете удалить заявление в целом).
  2. $(this).parent().Attr("title", "Test"); в $(this).parent().attr("title", "Test");
+0

Не нужно менять то, что вы предлагаете в # 1. Просто удалите эту строку вообще. Следующая строка заботится о том, что фактически хочет OP (не уверен, почему у них есть оба) - '$ (this) .text (" Organization ");' – Ian

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