2016-03-31 14 views
0

クリックしたIDを削除して入力値を削除しようとしています。例えば、私はこの入力を持っています<input type='hidden' id='uploadvalues' value="8,9"/>あなたは値8,9を見ることができ、ボタンは<div class="delete" id="9"></div>です。 id="9"をクリックすると、入力値9が削除されます。クリック後id="9" ==><input type='hidden' id='uploadvalues' value="8"/>クリックしたIDを入力値から削除する

誰でも私に教えることができますか? CodeCanyon

<div class="container"> 
    <div class="area"> 
     <div class="image"><img src="https://s-media-cache-ak0.pinimg.com/736x/05/2f/1b/052f1b3a2361eb4f3c1385c1fd4f75ed.jpg"></div> 
     <div class="delete" id="8"></div> 
    </div> 
    <div class="area"> 
     <div class="image"><img src="http://www.wallpapermade.com/images/wallpapers/originals/tip-and-oh-laugh-together-home-2015-movie-wallpaper-4612.jpg"></div> 
     <div class="delete" id="9"></div> 
    </div> 
    <input type='hidden' id='uploadvalues' value="8,9"/> 
</div> 

JS

$(document).ready(function(){ 
    $("body").on("click", ".delete", function(){ 
    // Remove clicked id from the input value 
    }); 
}); 
+1

数字で始まる 'id'を使用することはお勧めできません。私はそれを 'data'属性に入れましたか? – putvande

答えて

2

したいアプローチの一つの方法は、あなたが削除ボタンをクリックすると、コールバック関数にIDをつかむ

$("body").on("click", ".delete", function(){ 
     var id = this.id, //extract the id from the clicked element 
      values = $('#uploadvalues').val().split(','), // get the existing values in the #uploadvalues element 
      remaining = values.filter(function(val){ // filter out the ones equal to the id of the clicked element 
      return val !== id; 
      }); 

     $('#uploadvalues').val(remaining.join()); // update the changed values 
    }); 
+0

あなたの答え@ gaby-aka-g-petrioliに感謝します。だから、あなたはこの解決策についてどう思いますか教えてください。別の解決策をクリックしてください[デモ](http://codepen.io/shadowman86/pen/oxeKLM) – Azzo

+0

デモは機能しますが、無駄な要素を残しています。 'id'属性が削除された' .delete'ボタンです。したがって、それはもはや機能しなくなるので、迷惑な要素になります。あなたのコードから見えないページの全体的な機能に依存します。 –

+0

@ gaby-aka-g-petrioli Hmmm、ありがとう、あなたの解答に感謝します。 – Azzo

2

から

Demoは、それが

$(document).ready(function(){ 
    $("body").on("click", ".delete", function(){ 
    var val = $(this).attr("id"); 
    var values = $("#uploadvalues").val().split(","); 
    var valIndex = values.indexOf(val); 
    if (valIndex > -1) 
    { 
     values.splice(valIndex,1); 
    } 
    $("#uploadvalues").val(values.join(",")) 
    }); 
}); 
1

、この文脈で regular expressionを利用するようにしてみ作ります
$(document).ready(function() { 
    $("body").on("click", ".delete", function(){ 
    var id = this.id; 
    $("#uploadvalues").val(function(val){ 
     return val.replace(new RegExp(id + "\,|\,"+ id +"$"),"") 
    }); 
    }); 
}); 
1

次のとおりです。また、

var valueToRemove = this.id; 
// now you need to look to see if that value is inside the hidden input 
var valueToRemove = this.id; 

    console.log(valueToRemove); 

    var values = $("#uploadvalues").val(); 

    if(values.indexOf(valueToRemove) >= 0){ 
     $("#uploadvalues").val(values.replace(valueToRemove,"")); 
    } 

キャッシュするためのベストプラクティスあなたは常にそれを照会する必要はありません。

これはあなたが望むものですか?このメソッドは値内のコンマを取り除きません。

関連する問題