javascript - Jquery data-target as string possible? - Stack Overflow

I have a data-attribute with a unique name and a number at the end. data-target="foo-bar-n"wh

I have a data-attribute with a unique name and a number at the end.

data-target="foo-bar-n"

where n is the unique number.

I want to be able to get that number but it isn't working.

I call:

.data("target")

on the object I want the target from and It returns fine, but when I use a regex search on the results, I get a pletely different number, which I suspect is because returned data is an object with other data. What I need to know is how to get that number out, or how to convert the data-attribute into a string. (I've tried toString, and that doesn't work.)

Here is my code:

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

The console logs

#ment_for_paragraph_17
23

The program is meant to let a user select something on the page and highlight it.

I have a data-attribute with a unique name and a number at the end.

data-target="foo-bar-n"

where n is the unique number.

I want to be able to get that number but it isn't working.

I call:

.data("target")

on the object I want the target from and It returns fine, but when I use a regex search on the results, I get a pletely different number, which I suspect is because returned data is an object with other data. What I need to know is how to get that number out, or how to convert the data-attribute into a string. (I've tried toString, and that doesn't work.)

Here is my code:

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

The console logs

#ment_for_paragraph_17
23

The program is meant to let a user select something on the page and highlight it.

Share Improve this question edited Sep 27, 2014 at 23:21 King_llama asked Sep 27, 2014 at 23:11 King_llamaKing_llama 1792 gold badges2 silver badges12 bronze badges 2
  • 1 Can you provide your code? Also, data attributes are still just attributes. Try .attr('data-target') to get the string value of that attribute... and this regex should work: /([\d]+)$/ – Ryan Wheale Commented Sep 27, 2014 at 23:13
  • I have provided my code. When I try the attr method, I get the same results. – King_llama Commented Sep 27, 2014 at 23:25
Add a ment  | 

3 Answers 3

Reset to default 2

If you are using jQuery 1.4.3 or later you can use

.data("target");

otherwise you must use

.attr("data-target");

But your requirement appears to be extracting a number from a formatted string parameter?

HTML:

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

jQuery:

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

Or regex:

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

Or if your requirement is specifically capture the last number in the string (eg: foo-bar-55-23 would result in '23')

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

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

See fiddle

I suspect is because returned data is an object with other data.

That doesn't make any sense at all. The reason you are not getting the number in the string is because .search returns the index of the match. Use .match or .exec instead:

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

Try:

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

.split will split your string into an array with each array element being a word

.slice(-1) will return an array consisting of the last element of your array

[0] accesses the array element

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1742289720a4415960.html

相关推荐

  • javascript - Jquery data-target as string possible? - Stack Overflow

    I have a data-attribute with a unique name and a number at the end. data-target="foo-bar-n"wh

    19小时前
    20

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信