2012-04-30 3 views
0

Все еще новый на этом ... Извините! У меня есть шаблон для нескольких страниц, которые по-разному функционируют на каждом из них. Как и в случае, макет выглядит одинаково, но страница может быть предназначена для проектирования, загрузки, ценообразования или получения шаблона.Как вытащить имя attr из href?

Слева кнопка, если они знают размеры своего продукта. Нажатие кнопки приводит их к соответствующей странице в зависимости от их потребности (например, загружать страницу, если они нажали кнопку загрузки). Кнопка является динамическим с шаблоном, как так:

<a id="sg-start-button" class="button blue" href="javascript:void(0);" name="<?php echo $guide_action; ?>">Start Designing!</a> 

И сценарий должен вывести значение из «имя» атрибута и действовать соответствующим образом.

Я просто не знаю, как указать jquery, чтобы посмотреть на это значение. Вот что у меня есть:

$('#sg-start-button').click(function() { 
    var $guide_action = $('#sg-start-button').I NEED THIS(); 
    if($guide_action == 'design') start_action(0); 
    if($guide_action == 'upload') start_action(1); 
    if($guide_action == 'template') start_action(2); 
    if($guide_action == 'price') start_action(3); 
}); 

Я попытался атр тег (.attr («имя»)), но это было не так. Цените любую помощь. Благодаря!

+1

вы не начинаете переменные js с помощью $. – gopi1410

+1

@ gopi1410 нет никакой проблемы при запуске имени переменной с '$' – thecodeparadox

+0

@ gopi1410 уверен, что вы можете! – balexandre

ответ

2
$('#sg-start-button').click(function() { 
    console.log($(this).attr('name')); 
    console.log($(this).attr('href')); 
}); 

Я думаю, что вы хотите что-то вроде этого:

$('#sg-start-button').click(function(e) { 
    e.preventDefault(); 
    var $guide_action = $(this).attr('name'); 
    if($guide_action == 'design') start_action(0); 
    if($guide_action == 'upload') start_action(1); 
    if($guide_action == 'template') start_action(2); 
    if($guide_action == 'price') start_action(3); 
}); 
+0

Я пробовал это .. Но по какой-то причине я получаю сообщение об ошибке «$ (« # sg-start-button »). Attr (« name ») не является функцией« Я пытался добавить e.preventDefault и т. Д., Которые у вас есть в вашем примере, но та же ошибка продолжает появляться. – anubis

+0

@ user1359309 попробуйте обновить ответ – thecodeparadox

+0

О, я понял свою ошибку. Я печатал .attr ('name')(); ... те дополнительные() меня доставали. Ха-ха, спасибо за вашу помощь! У вас, ребята, был правильный ответ, я просто не набрал его правильно. Еще раз спасибо! Я узнаю это в конце концов. :) – anubis

4
$('#sg-start-button').click(function() 
{ 
    console.log($(this).prop('name')); 
}); 
+2

+1 для использования 'prop()' –

0

attr("name") работы. Проверьте this jsfiddle

$('#sg-start-button').click(function() { 
    var guide_action = $('#sg-start-button').attr("name"); 
    alert(guide_action); 
});​ 
0

Вы Шоуда использовать метод атр().

Так что ваш код будет выглядеть следующим образом:

$('#sg-start-button').click(function() { 

    var $guide_action = $('#sg-start-button').prop('name'); 

    switch($guide_action) { 

     case 'design': 
      start_action(0); 
      break; 

     case 'upload': 
      start_action(1); 
      break; 

     case 'template': 
      start_action(2); 
      break; 

     case 'price': 
      start_action(3); 
      break; 

    } 

}); 
0

В вашем примере вы должны использовать prop():

$('#sg-start-button').click(function() { 
    var guideAction = $(this).prop('name') 
}); 

Однако ИМО было бы семантический использовать data-x атрибуты, например:

<a id="sg-start-button" class="button blue" href="#" data-guide-action="<?php echo $guide_action; ?>">Start Designing!</a> 
$('#sg-start-button').click(function(e) { 
    e.preventDefault(); 
    var guideAction = $(this).data("guide-action") 
}); 
+0

Я сохраню это как ref, пока что немного над моей головой, как полный noob, lol. Но спасибо, это должно быть полезно в будущем. :) – anubis

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