簡體   English   中英

jQuery的數據目標盡可能字符串?

[英]Jquery data-target as string possible?

我有一個數據屬性,末尾有一個唯一的名稱和一個數字。

data-target="foo-bar-n"

其中n是唯一數字。

我希望能夠獲得該號碼,但無法使用。

我打電話:

.data("target")

在我想要目標的對象上,它返回正常,但是當我對結果使用正則表達式搜索時,我得到一個完全不同的數字,我懷疑這是因為返回的數據是帶有其他數據的對象。 我需要知道的是如何獲取該數字,或者如何將數據屬性轉換為字符串。 (我嘗試過toString,但這是行不通的。)

這是我的代碼:

var selection= window.getSelection().getRangeAt(0);
var showSelection = $(selection.commonAncestorContainer.parentNode.parentNode)
  .data('target');
console.log(showSelection);
console.log(showSelection.search(/\d+/));

控制台日志

#comment_for_paragraph_17
23

該程序旨在讓用戶選擇頁面上的某些內容並將其突出顯示。

如果您使用的是jQuery 1.4.3或更高版本,則可以使用

.data("target");

否則,您必須使用

.attr("data-target");

但是您的要求似乎是從格式化的字符串參數中提取數字?

HTML:

<div id="foo" data-target="foo-bar-5"></div>

jQuery的:

var num = $('#foo').data('target').split('-')[2];

或正則表達式:

var num = $('#foo').data('target').match(/\d+/);

或者,如果您的要求是專門捕獲字符串中的最后一個數字(例如:foo-bar-55-23將導致“ 23”)

var num = $('#foo').data('target').split('-').slice(-1);

// regex
var num = $('#foo').data('target').match(/\d+$/);

小提琴

我懷疑是因為返回的數據是其他數據的對象。

那根本沒有任何意義。 之所以沒有在字符串中獲取數字,是因為.search返回了匹配項的索引。 使用.match.exec代替:

showSelection.match(/\d+/)[0];
          /*or*/
/\d+/.exec(showSelection)[0];

嘗試:

.data('target').split('-').slice(-1)[0];

.split會將您的字符串分割成一個數組,每個數組元素都是一個單詞

.slice(-1)將返回一個包含數組最后一個元素的數組

[0]訪問數組元素

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM