jquery 질문 드립니다.
본문
안녕하세요.
<a href="#" data-action="vote" data-param="mine:false,commentNo:'12345',voteStatus:'SYMPATHY',objectId:'55555_10',ticket:'comic'" data-log="RPC.sym#RPC.unsym" class="u_cbox_btn_recomm"></a>
jquery에서 data-param값을 가져오고 싶으면
아래 처럼 하면 되는
반대로
data-param에 값을 넣고 싶을때는 어떻게 하는지 궁금합니다.
$(document).on('click', '.u_cbox_btn_recomm', function(e){
var data_param = $(this).attr("data-param");
var commentNo = data_param.match(/commentNo:'(.*?)'/)[1];
var objectId = data_param.match(/objectId:'(.*?)'/)[1];
alert(commentNo);
alert(objectId);
});
data-param 에 값 넣기
<a href="#" data-action="vote" data-param="mine:false,commentNo:'12345',voteStatus:'SYMPATHY',objectId:'55555_10',ticket:'comic'" data-log="RPC.sym#RPC.unsym" class="u_cbox_btn_like"></a>
var data_param_u = $('.u_cbox_btn_like').attr("data-param");
data_param_u.attr('commentNo','ccccc');
data_param_u.attr('objectId','88888_10');
위 처럼 해도 안되네요.
어떻게 해야 값을 넣을수 있나요?
감사합니다.
!-->답변 4
<a href="#" data-action="vote" data-param="mine:false,commentNo:'12345',voteStatus:'SYMPATHY',objectId:'55555_10',ticket:'comic'" data-log="RPC.sym#RPC.unsym" class="u_cbox_btn_recomm">u_cbox_btn_recomm</a>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
$(document).on('click','.u_cbox_btn_recomm',function(e){
var series_items = $(this).data('param');
series_items = series_items.replace(/([^,]+):/g, '"$1":');
series_items = series_items.replace(/:'(.*?)'(,|$)/g, ':"$1"$2');
series_items = '{' + series_items + '}';
var series_obj = JSON.parse(series_items);
console.log(series_obj);
// alert(series_obj.commentNo);
// alert(series_obj.objectId);
var now = String(Date.now());
series_obj.commentNo = 'ccccc'.concat('_').concat(now);
series_obj.objectId = '88888_10'.concat('_').concat(now);
var series_str = JSON.stringify(series_obj);
series_str = series_str.replace(/"([^,"]+)":/g, '$1:').replace(/"/g, "'");
$(this).data('param', series_str.substring(1, series_str.length - 1));
$(this).attr('data-param', series_str.substring(1, series_str.length - 1));
});
</script>
값얻기 : $(this).data('data-param');
값설정: $(this).data('data-param', 'value');
.attr()을 이용하면 요소의 속성 값을 가져오거나(get) 변경(set)할 수 있습니다.
아래과 같은 테크로 문장이 구성되었다면....
<a href="#" data-action="vote" data-param="mine:false,commentNo:'12345',voteStatus:'SYMPATHY',objectId:'55555_10',ticket:'comic'" data-log="RPC.sym#RPC.unsym" class="u_cbox_btn_recomm"></a>
-- 아래 내용을 참고 하시면 되듯합니다.
$(".u_cbox_btn_recomm").attr("data-param");
// 요소의 속성 값 get
$(".u_cbox_btn_recomm").attr("data-param", "attributeValue");
// 요소의 속성 값 set
복잡하게 설명하지 않고 이해가 쉽게 간결하게 정리해봤습니다.
var data_param_u = $('.u_cbox_btn_like').attr("data-param");
data_param_u = data_param_u.replace(/commentNo:'\d+'/g, "commentNo:'ccccc'");
data_param_u = data_param_u.replace(/objectId:'\d+_\d+'/g, "objectId:'88888_10'");
$('.u_cbox_btn_like').attr("data-param", data_param_u);