テキストの内容によって、データ属性に値(複数)を追加したいです。
追加する場所は、data-filterです。
デフォルトで、 #a-1, #b-1 という値が入っており、ここにさらに、下記のような条件にて値を追加したいです。
(サービスと要望は毎回、各1こずつ追加されます。なので、常に下記のような形になります。)
<div class="list col" data-filter='["#a-1", "#b-1"]'>
赤くしたい という文字列が含まれている場合は、"#a-2"を追加 丈夫にしたい という文字列が含まれている場合は、"#a-3"を追加 塗装 という文字列が含まれている場合は、"#b-2"を追加 建築 という文字列が含まれている場合は、"#b-3"を追加
現在、
console.log($('.list.col').data('filter'));
の値を見てみると、
確かに #a-数字 のフォーマットでdata-filter が形成されてはいるようです。
しかし、上記の作り出した data-filter は、実際に現在のhtmlにある data-filter に追加されません。
試みたことでは、
$('.list.col').data('filter', '#a-' + index_number);
と書けば、data-filter に値をセットできると思ったのですが、
追加されていませんでした。
どのようにすれば、作り出した data-filter の値を追加することが出来るでしょうか。
<!-- html --> <div id="js-casestudy"> <div class="list col" data-filter='["#a-1", "#b-1"]'> <div class="entry"> <div class="attribute"> <dl> <dt>サービス</dt> <dd class="case_service">塗装</dd> </dl> <dl> <dt>要望</dt> <dd class="case_request">赤くしたい</dd> </dl> </div> </div> </div> <div class="list col" data-filter='["#a-1", "#b-1"]'> <div class="entry"> <div class="attribute"> <dl> <dt>サービス</dt> <dd class="case_service">建築</dd> </dl> <dl> <dt>要望</dt> <dd class="case_request">丈夫にしたい</dd> </dl> </div> </div> </div> </div>
// jQuery $(function() { $('#js-casestudy .list').each(function(){ var request_list = ['赤くしたい', '丈夫にしたい', '転居したい']; var request = $('.attribute dl dd.case_request').text(); var service_list = ['塗装', '建築', '引っ越し', '清掃']; var service = $('.attribute dl dd.case_service').text(); var req = request_list.length; var serv = service_list.length; while (req--) { if (request.indexOf(request_list[req]) !== -1) { var index_number = (request_list).indexOf(request_list[req]) + 2; $('.list.col').data('filter', '#a-' + index_number); console.log($('.list.col').data('filter')); } } while (serv--) { if (service.indexOf(service_list[serv]) !== -1) { var index_number = (service_list).indexOf(service_list[serv]) + 2; $('.list.col').data('filter', '#b-' + index_number); console.log($('.list.col').data('filter')); } } }) });
回答2件
あなたの回答
tips
プレビュー