1

私はこのようなコードを持っています

<p class="shownote">
Text value
<a href="#" class="show">
textvalues</a>
<input class="editnotesbox" style="display:none"></input>  
<a href="#" class="editnote">Edit</a>
<a href="#" class="deletenote">Delete</a>
<div class="hidennote" style="display: none;">
Text value
</div>
</p>

そして、jquery変数でdivhidennoteクラスの値を取得したいと思います。このようにJqueryを試します。

 $('.show').live('click', function (event) {

        $(this).parent('.shownote').find('.editnotesbox').show();
         var getnote = $(this).closest('.hidennote').text;
        $('.editnotesbox').val(getnote);
        $(this).hide();

    });

しかし、値を取得できません。どうすればこれを達成できますか?

4

2 に答える 2

2

開始タグによって要素が自動的に閉じられるため、DOM<div>内のa内に要素を配置することはできません。<p><div><p>

許可された包含関係を探すための信頼できる場所は、HTML仕様です。ここでは、HTMLコンテンツモデルを参照してください。どの要素がブロック要素で、どの要素がインラインであるかを指定します。

したがって、divを次のように置き換えて<span>みてください: サンプルフィドル

$(".shownote").on('click', '.show', function (event) {
   var shownote = $(this).parent();
   shownote.find('.editnotesbox').show();
   var getnote = shownote.find('.hidennote').text();
   $('.editnotesbox').val(getnote);
   $(this).hide();
});

また.live()、jQuery1.9で廃止されたものは避けてください。.on()

于 2013-03-13T13:35:23.440 に答える
1
$('div.hidennote').text()

もちろん、divには値がないため、divのテキストが返されます。

あなたの更新に基づいて:

$('.show').live('click', function (event) {
    $shownote = $(this).parent();
    $shownote.find('.editnotesbox').show();
    var getnote = $shownote.find('.hidennote').text();
    $('.editnotesbox').val(getnote);
    $(this).hide();
});

live1.7で廃止された1.9で削除されたことに注意してください。

于 2013-03-13T13:32:11.530 に答える