第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無論 DOM 結(jié)構(gòu)如何,在給定文本選擇的情況下查找特定類的前一個元素

無論 DOM 結(jié)構(gòu)如何,在給定文本選擇的情況下查找特定類的前一個元素

函數(shù)式編程 2023-06-29 15:39:27
如附圖所示,我的目標(biāo)是選擇一個文本,例如“Among the Helvetii”,并找到 nMarker 類中的哪個元素在選擇之前。換句話說,我想選擇“Among the Helvetii”并以某種方式找到 nMarker 類的元素,該元素的數(shù)據(jù)標(biāo)記等于 1。不幸的是,我沒有一次機(jī)會使用 jQuery prevAll、prev、closest 等,因?yàn)?DOM 是未知的,所以我無法計算父母、祖先等,因?yàn)闃?biāo)記放置在許多單詞之后,緊隨算法(這是我無法更改的要求)。到目前為止,我所取得的成就是實(shí)現(xiàn)了這個方案,如果選擇與標(biāo)記所在的元素位于同一元素中,則該方案有效。但正如我所說,我想要一個在不了解 DOM 結(jié)構(gòu)的情況下工作的解決方案。var sel = window.getSelection ? window.getSelection() : document.selection.createRange();if(sel.getRangeAt){ // That’s for Firefox    var range = sel.getRangeAt(0);    var newNode = document.createElement("span");    newNode.setAttribute('class', 'justSelected');    range.surroundContents(newNode);    $(".justSelected").prevAll(".nMarker").data( "marker")}
查看完整描述

1 回答

?
米脂

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超3個贊

使用非 jQuery 方法,我像這樣管理它:


var body = $("body").text();

var toFind = window.getSelection().toString();

var strRegEx = '{:(?:(?!{:).)*?'+toFind; 

var res = body.match(strRegEx);

console.log(res);

var regExp = /\{:([^)]+)\:}/;

var matches = regExp.exec(res[0]);

alert(matches[1]);

無論如何,這并不能完全回答問題(我想獲得數(shù)據(jù)標(biāo)記屬性),但現(xiàn)在我得到了相同的數(shù)字。然而,只有當(dāng)選擇在整個文本中是唯一的時,這才有效。


查看完整回答
反對 回復(fù) 2023-06-29
  • 1 回答
  • 0 關(guān)注
  • 137 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號