jquery 질문 드립니다.

jquery 질문 드립니다.

QA

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>

안녕하세요.
series_items 까지는 값이 잘 넘어오는데
아래 부분에서 부터 값이 넘어오지 않습니다.
var series_obj = JSON.parse(series_items);
console.log(series_obj);
감사합니다.

<script src="http://code.jquery.com/jquery-latest.min.js"></script>

<script>
$(document).on('click','.u_cbox_btn_userblock',function(e){
$(".u_cbox.u_cbox_layer_wrap").css('display','block');

var data_param = $(this).attr("data-param");
        var commentNo = data_param.match(/commentNo:'(.*?)'/)[1];
        var objectId = data_param.match(/objectId:'(.*?)'/)[1].split("_");
var nickName = data_param.match(/nickName:'(.*?)'/)[1];
var series_id = objectId[0];
var no = objectId[1];

var series_items = $('.u_cbox_layer_userblock_primarybtn').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);
    alert(series_obj);

series_obj.commentNo = commentNo;

return false;
});
</script>


<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_layer_userblock_primarybtn u_cbox_btn_userblock">u_cbox_layer_userblock_primarybtn, u_cbox_btn_userblock</a>

<script src="http://code.jquery.com/jquery-latest.min.js"></script>

<script>
$(document).on('click','.u_cbox_btn_userblock',function(e){
$(".u_cbox.u_cbox_layer_wrap").css('display','block');

// var data_param = $(this).attr("data-param");
// console.log(data_param);
//         var commentNo = data_param.match(/commentNo:'(.*?)'/)[1];
//         var objectId = data_param.match(/objectId:'(.*?)'/)[1].split("_");
// var nickName = data_param.match(/nickName:'(.*?)'/)[1];
// var series_id = objectId[0];
// var no = objectId[1];

var series_items = $('.u_cbox_layer_userblock_primarybtn').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);
    // alert(series_obj);
    console.log(series_obj);

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));

return false;
});
</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);
답변을 작성하시기 전에 로그인 해주세요.
전체 123,741 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT