2015-03-14 2 views
3

У меня есть много гиперссылка с функцией OnClick, которые имеют значение дифферента на этом пути:Как извлечь часть значения внутри атрибута

<a onclick="Utils.decideOffer('', {'unlockFeature': 'cars'});">cars text</a> 
<a onclick="Utils.decideOffer('', {'unlockFeature': 'bikes'});">bikes whatever</a> 
<a onclick="Utils.decideOffer('', {'unlockFeature': 'motorcycles'});">another motor</a> 

Теперь, когда щелкнули этот элемент мне нужно получить значение этот массив, например: «автомобили», «велосипеды» или «мотоциклы».

Не предлагайте получить их от Utils.decideOffer, потому что мне нужно получить их без редактирования этого файла/функции. Вот как я собираюсь его извлечь.

$('a').click(function() { 
    onclickValue = $(this).attr('onclick'); 
    if (onclickValue.length) { 
     var optionSelectedValue = ??? ; 
    } 
}); 

Я думал об использовании Regex так что вы можете помочь мне на Regex использовать на этом ?, или если у вас есть еще одна хорошая идея для достижения этой цели также приветствуется!

+3

только вопрос, внутренний текст гиперссылок Isnt должен быть автомобили/мотоциклы/мотоциклы, а вместо всего лишь «автомобиль "? потому что, если это так, то вы можете просто получить информацию из внутреннего текста ... – Banana

+0

@ Банана - это слишком легко –

+0

@ Банана, внутренний текст гиперссылок отличается от других, вы видели «автомобили» в моем примере, потому что я ушел они, как это, когда я сделал копию, я только что исправил ее. Спасибо за наблюдение. – Saymon

ответ

2

Попробуйте split() как:

$('a').click(function() { 
    onclickValue = $(this).attr('onclick'); 
    if (onclickValue.length) { 
     var optionSelectedValue = onclickValue.split(":")[1].split("}")[0]; 
    } 
}); 

он вернет 'cars' или 'bikes' или 'motorcycles' включая кавычки

См JSFIDDLE

... или получить значение без кавычек как предлагается:

optionSelectedValue = onclickValue.split(":")[1].split("}")[0].split("'")[1]; 

Смотрите обновленный JSFIDDLE

+0

или разделите, используя кавычки в качестве разделителя, чтобы получить текст без них ... – Banana

+0

@Banana yep, но для этого потребуется больше сплит-процессов;) – JFK

0
$('a').click(function() { 
    onclickValue = $(this).attr('onclick'); 
    if (onclickValue.length) { 
     var re = /(?!: ')+(\w)+(?='})/; 
var found = onclickValue.match(re); 
     var optionSelectedValue = found[0] ; 
     alert(optionSelectedValue); 
    } 
}); 

Демо: http://jsfiddle.net/wpjh1ma7/

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