2017-05-06 4 views
0

を使用している場合、この文はない作業を行います。

$(this).closest(".myclass").addClass("myextraclass"); 

をしかし、この文はありません:

$("div").closest(".myclass").addClass("myextraclass"); 

でそれは(この文脈で使用されていますmark.jsライブラリ):

instance.markRegExp(/mypattern/gi, {className:"myclass", done: function() { 
    $(this).closest(".myclass").addClass("myextraclass"); 
    }}); 

解決策:(礼儀BaroとChay22):

$(node).closest(".myclass").addClass("myextraclass"); 

コンテキスト、

instance.markRegExp(/mypattern/gi, {className:"myclass", each: function(node) { 
     $(node).closest(".myclass").addClass("myextraclass"); 
     }}); 
あなたはjqueryのを使用している場合
+0

も$(this.element)マークされた要素を取得する代わりに、 'done'のeach' .closest – haz

+1

使用を'試してみました。これらのオプションには 'this'参照がバインドされていません。 https://github.com/julmot/mark.js/blob/master/src/mark.js#L772 No、 '.call'、' .apply'、 'bind' – Chay22

+0

はい、使用時オプション 'done'はカウントを返しますが、 'each'は関数が私が探していたノードを返します。 DOM要素にアクセスするには$(これ)はまだ動作せず、$(ノード)を使用する必要があります – haz

答えて

3

私はあなたが正確にせずにしたいのか分からない... mark.ksのjQueryの構文を使用する必要がありますHTMLを見て、あなたのロジックに何か間違っていると思います。これは、すべての要素にmyclassを追加し、closestと追加すると、このクラスの父要素を探しているからです。


$("div").closest(".myclass").addClass("myextraclass"); 

この作品の簡単なjQueryのコマンド、何もないですので。その文脈で


$(this).closest(".myclass").addClass("myextraclass"); 

thisMarkはオブジェクトであり、要素が強調表示または父親要素ではありません。


あなたはすべての要素がこれを試して強調したい場合:

JSFiddle example

HTML

<div class="findhere"> 
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris ut augue neque. Cras euismod varius metus ut bibendum. 
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris ut augue neque. Cras euismod varius metus ut bibendum. 
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris ut augue neque. Cras euismod varius metus ut bibendum. 
</div> 

<div> 
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris ut augue neque. Cras euismod varius metus ut bibendum. 
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris ut augue neque. Cras euismod varius metus ut bibendum. 
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris ut augue neque. Cras euismod varius metus ut bibendum. 
</div> 

CSS

.findhere { color:red; } 
.myclass { text-decoration:underline; } 
.myextraclass { font-weight:bold; } 
.green { color:green; } 

JS

var instance = new Mark("div.findhere"); 
instance.markRegExp(/ipsum/gi, {className:"myclass", each: function(node) { 
    $(node).addClass("green"); 
    $(node).closest(".findhere").addClass("myextraclass"); 
}}); 
1

あなたは

$(".context").markRegExp(regexp [, options]); 
+0

ありがとうございましたが動作しませんでした – haz

関連する問題