1
 <table border="0"  class="commentbox">
   <tr>
     <td>
          <div id="comment-f78d0b00-a008-473d-b647-a4a103ee3778"></div>
         <input type="button" class='btnReply' id="reply-f78d0b00-a008-473d-b647-a4a103ee3778" value="Reply"/>

     </td>
 </tr>
</table>

  $(".commentbox .btnReply").live("click", function () {
            //  $(this).hide();
            // i = 1;
            id = $(this).attr("id").split("-")[1]
            alert(id);
            var strDiv = 
             "<input type='text' class='txtCmnt' id='txtReply-" + id + "' /> 
        <input type='button' class='btnSave' value='Save' id='btnSave-" + id + "' /> ";
            $("#comment-" + id).append(strDiv);


        });

f78d0b00-a008-473d-b647-a4a103ee3778 が分割後に来るようにしたいのですが、アラートが f78d0b00を与えています

id = comment_ f78d0b00-a008-473d-b647-a4a103ee3778 を変更して分割しようとしました

id = $(this).attr("id").split("_")[1],but it doesnt work.

編集済み

入力- container-f78d0b00-a008-473d-b647-a4a103ee3778

分割後の出力f78d0b00-a008-473d-b647-a4a103ee3778

4

4 に答える 4

2

最終結果を達成するための少し複雑な手段:

// splits the supplied string by the hyphen '-' character
var string = 'comment-f78d0b00-a008-473d-b647-a4a103ee3778'.split(/-/);
    // removes the zeroeth/first element from the string array
    string.shift();
    // joins the remaining elements from the string back together
var newString = string.join('-');
console.log(newString);​

JS フィドルのデモ


上記を関数に変えるように編集されました:

function splitString(haystack, needle){
    if (!needle || !haystack){
        return false;
    }
    var string = haystack.split(needle);
    string.shift();
    return string.join(needle);
}

// the first argument is the string you want to work on,
// the second is the character you want to split on
// f is the variable that will hold the new string
var f = splitString('comment-f78d0b00-a008-473d-b647-a4a103ee3778','-');
console.log(f);​

JS フィドルのデモ

参考文献:

于 2012-04-22T10:16:48.053 に答える
0

この方法で実行できます。より長いバージョンになる可能性がありますが、3 行しかありません。split()ハイフンを介して文字列だけをつなぎ、最初のインデックスをスプライスしてから、メソッド"-"を使用して文字列全体を再結合しますjoin()

例: http://jsfiddle.net/eE48z/

$(document).ready(function(){
$(".commentbox .btnReply").click(function(){
var jid = $(this).attr("id").split("-");
jid.splice(0,1);
var id=jid.join("-");
alert(id);
var strDiv = "<input type='text' class='txtCmnt' id='txtReply-" + id + "' /><input type='button' class='btnSave' value='Save' id='btnSave-" + id + "' /> ";
        $("#comment-" + id).append(strDiv);
    });
});
于 2012-04-22T11:00:52.890 に答える
0

文字列の形式が変更されない場合、代わりに部分文字列関数を使用するのはどうですか?

var str = "comment-f78d0b00-a008-473d-b647-a4a103ee3778";
var subStr = str.substring(str.indexOf("-") + 1);

alert(subStr);

これは以下を返します: f78d0b00-a008-473d-b647- a4a103ee3778

それが機能する場合、コードは次のようになります

var id = $(this).attr("id");
var subStr = id.substring(str.indexOf("-") + 1);

alert(subStr);
var strDiv =
"<input type='text' class='txtCmnt' id='txtReply-" + id + "' /> <input type='button' class='btnSave' value='Save' id='btnSave-" + id + "' /> ";

$("#comment-" + subStr).append(strDiv);
于 2012-04-22T10:12:27.550 に答える
0

デモjsFiddle

これはそれを行う必要があります:

 var id = '';
 var strDiv = '';
 $(".btnReply").live("click", function () {
            //  $(this).hide();
            // i = 1;
            id = $(this).prev('div').attr("id").split("comment-")[1];
            alert(id);
            strDiv = "<input type='text' class='txtCmnt' id='txtReply-"+ id +"' /><input type='button' class='btnSave' value='Save' id='btnSave-"+ id +"' />";
            $("div[id*="+id+"]").append(strDiv);
});
于 2012-04-22T10:16:28.933 に答える