1

次のようなhtmlがあります。

<tr class="meta-info" id="${page.id}">
    <td>
        <div class="pull-left">
         <font size="1">
             <a href="javascript:void(0)" class="like">Like</a>
         </font>
         </div>
         <div class="pull-right" style="font-size:1">
         <span class="badge"><i class="icon-thumbs-up"></i>1</span>          
         </div>
    </td>
</tr>

ユーザーがハイパーリンクのようにクリックするたびに、いいねの数を増やそうとしています。

これが私のjqueryコードです。jquery オブジェクトから html 要素を取得する方法を知りたいです。

$(".like").click(function(event){
    var parentTr = $(event.target).closest("tr");
    if(parentTr.length){
        var pageId = parentTr.attr("id");
        var spanEle = parentTr.get(0)+" div span:first-child"; ------(1)
        var lastNumber =  parseInt(spanEle.text());
        spanEle.text(lastNumber+1);
    }
});

1 とマークされている行で正しく実行しているかどうかはわかりません。

4

3 に答える 3

0

試してみてください:フィドル

var lastNumber = parseInt(parentTr.find('.pull-right span').text(), 10);

コードは次のようになります。

$(".like").click(function(event) {
    var parentTr = $(event.target).closest("tr");
    if (parentTr.length) {
        var pageId = parentTr.attr("id");
        var spanEle = parentTr.find('.pull-right span');
        var lastNumber =  parseInt(spanEle.text(), 10);
        spanEle.text(lastNumber + 1);
     }
});

<i>更新:タグを保持したい場合は、次を使用します。

spanEle.html(spanEle.html().replace(lastNumber, lastNumber + 1));

それ以外の :spanEle.text(lastNumber + 1);

サンプル

于 2013-03-12T10:15:00.487 に答える
0

これを試して...

$(".like").click(function(event) {
    var parentTr = $(event.target).closest("tr");
    if (parentTr.length) {
        var pageId = parentTr.attr("id");
        var spanEle = parentTr.first('.badge');
        var lastNumber =  parseInt(spanEle.text(), 10);
        spanEle.text(lastNumber + 1);
    }
});

span 要素が常にそのクラス名を持つ場合、最初の (唯一の?) クラス名が検索され、その中のテキストの int 値が返されます。

于 2013-03-12T10:16:29.240 に答える
0

<span>隣接するアイコンに触れずにカウントを置き換えることができるように、追加のタグを追加する必要があると思います

<span class="badge"><i class="icon-thumbs-up"></i>
    <span class="like-count">1</span>
</span>

その後、あなたはそれに対処することができます

$(".like").click(function() {
    var spanEle = $(this).closest('tr').find('.like-count').first();
    if (spanEle.length) {
        var newCount = parseInt(spanEle.text());
        spanEle.text(newCount + 1);
    }
});

イベント ハンドラでは、this参照はevent.target. 要素が存在しない場合もそれよりきちんと処理できるかもしれませんが、その方法は安全です。

JSFiddle デモ: http://jsfiddle.net/rupw/VfCvK/

于 2013-03-12T10:39:21.203 に答える