4

外部JSを使用して動的に表示される次のHTMLにアクセスできません。

<td class="quantitybox">
    <span class="qty">Quantity</span>
    <br style="clear:both;">
    :<input type="text" value="1" onkeydown="javascript:QtyEnabledAddToCart();" maxlength="8" size="3" name="QTY.1121309" class="v65-productdetail-cartqty">
</td>

私はそれを望んでいます:Jqueryを使用して削除/削除した後、どのハンドラーを使用する必要があるのか​​わかりませんクラスを<br>動的に適用して何かを実行する必要があります

4

4 に答える 4

5

jQueryの方法、なしregex

$('td.quantitybox').contents().filter(function(){       
    return this.nodeType === 3  && // textNode
           $.trim(this.nodeValue) === ":";
}).remove();

または、単にtextnodeを空の文字列に変更します。

$('td.quantitybox').contents().filter(function(){       
    return this.nodeType === 3  && // textNode
           $.trim(this.nodeValue) === ":";
})[0].nodeValue = "";

コロン付きの複数のテキストノード:がある場合-削除する場合:

$('td.quantitybox').contents().filter(function() {
    return this.nodeType === 3 && // textNode
    $.trim(this.nodeValue) === ":";
}).each(function() {
    this.nodeValue = "";
});​

あなたがそれをやりたいと思っていてregex、それのリスクを認識しているなら:

$('td.quantitybox').html(function(i, old){
    return old.replace(/:\s*</, '<');
});

質問のHTMLコードが編集されていることに注意してください。そのため、正規表現に空白を追加して、最初のマークアップでも機能するようにしました。

于 2012-05-29T11:34:00.483 に答える
1

現在テストされていませんが、次のことをお勧めします。

$('td').each(function() {
    var i = this.getElementsByTagName('input'),
        text = i.previousSibling.nodeValue.replace(/:/g, '');
    i.previousSibling.nodeValue = text;
});​
于 2012-05-29T11:34:57.063 に答える
0
$(document).ready(function(){
   var texts = $('input').map(function(){
        var text = this.previousSibling.nodeValue;
       this.previousSibling.nodeValue = text.replace(/:/g, '');
   });
});​
于 2012-05-29T11:46:05.127 に答える
0

別の解決策。例: http: //jsfiddle.net/k25yx/1/

$(document).ready(function() {

    // Cache Object
    var obj  = $('.quantitybox');

    obj.each(function(){
       var that = $(this);

       // remove br          
       that.find('br').remove();

       // trim colon  
       that.html(function(i, val) {
           return val.replace(':', '');
       });
    })
});
于 2012-05-29T11:51:20.863 に答える