2016-09-05 8 views
2

動的に出力され、データ属性 'data-value'で既に設定されている順序のないリストを使用しています。私はバックエンドで何が出力されているのかを制御していません。私はリスト要素のいくつかを隠し、それらのデータ属性を変更する必要があります。だから、例として、私は次のHTML持っている(実際のデータではないが!):HTMLコンテンツとデータ属性値の両方を非表示にして置き換えます

<ul class="dropdown-menu"> 
    <li data-value="1996"><a href="javascript:;">1996</a></li> 
    <li data-value="1997"><a href="javascript:;">1997</a></li> 
    <li data-value="1998"><a href="javascript:;">1998</a></li> 
    <li data-value="1999"><a href="javascript:;">1999</a></li> 
    <li data-value=""><a href="javascript:;">2000</a></li> 
<ul> 

私は、次のjQuery持っている:このコードワード

window.onload = function(){ 
    $('.dropdown-menu li[data-value="1996"]').html('YYYY'); 
    $('.dropdown-menu li[data-value="1996"]').attr('data-value', 'YYYY'); 
    $('.dropdown-menu li[data-value=""]').addClass('hideMe'); 
} 

をし、私が何をしたいんしかしそれは本当に乱雑で、長い間巻き込まれているようだ。より良い方法がありますか?示唆したように

+0

あなたでしチェーン '.htmlを()'と '.ATTR()'それ以外のものは電話がありません。 –

+0

改善すべき点は何もありません。正確に3つの操作があり、3行のコードが実行されます。 – casraf

+0

Roryが言ったことに同意します。 2番目のルックアップを保存したい場合、要素を変数として保存することができます。 – DottedT

答えて

0

、あなたは最初の2行を連鎖することができますし、2行でラップ:

$(document).ready(function(){ 
 
    $('.dropdown-menu li[data-value="1996"]').html('YYYY').attr('data-value', 'YYYY'); 
 
    $('.dropdown-menu li[data-value=""]').addClass('hideMe'); 
 
}); 
 
.hideMe{ 
 
    display:none; 
 
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul class="dropdown-menu"> 
 
    <li data-value="1996"><a href="javascript:;">1996</a></li> 
 
    <li data-value="1997"><a href="javascript:;">1997</a></li> 
 
    <li data-value="1998"><a href="javascript:;">1998</a></li> 
 
    <li data-value="1999"><a href="javascript:;">1999</a></li> 
 
    <li data-value=""><a href="javascript:;">2000</a></li> 
 
<ul>

関連する問題