Jquery通过id动态选择对象使用字符串
Jquery select object by id dynamically using a string
我有一个使用情态的图片库。在图像模态中或在图像模态外,用户可以单击星号并将图像标记为收藏。最喜欢的图像有一个类,使星星改变颜色为"金色"。如果用户在模态中标记了收藏夹,我需要在模态之外更改该图像的星号的颜色。
要做到这一点,我想我可以有一个
<p id = "modal_counter" class = "hidden">number</p>
,这样我就可以得到图像的编号。然后我使用该图像编号作为jquery选择器的一部分。
图库中的图片如下所示:
<p id = "image_number" class = "hidden"></p>
<!-- for example: <p id = "image_2" class = "hidden"></p> -->
所以,我所需要的就是成功地选择每个图像旁边隐藏的p标记,然后我可以使用jquery的next()或parent().find()。这是相关代码:
...
var modal_counter = div_parent.find('#modal_counter').text();
var counter = "#image_"+String(modal_counter);
/* I would like the counter to be something like "#image_2" */
var $(counter).parent().find('.star').addClass('golden')
...
这行不通。Jquery尝试使用以下选择器查找对象:
"#image_'n 2"
,当然,它找不到。我试着用正则表达式删除'n,但它仍然不起作用:
counter_processed = modal_counter.replace(/(<([^>]+)>)/ig,"");
在元素上使用data-attribute
可能比获取文本内容更好。做的事:
<p id = "modal_counter" class = "hidden" data-counter="number">number</p>
那么你可以:
...
var modal_counter = div_parent.find('#modal_counter').data('counter');
var counter = "#image_" + modal_counter;
/* I would like the counter to be something like "#image_2" */
var $(counter).parent().find('.star').addClass('golden')
...
这样你就不会将javascript绑定到元素中的文本。
jQuery有一个方便的trim
函数:
var modal_counter = div_parent.find('#modal_counter').text().trim();
在您的控制台中试试:
$.trim("'n'nHello'r'nThere'n")
看到它是如何去除前后空白的了吗?
假设你有:
<p id="modal_1" class="hidden">Img 1</p>
可以同时使用:
// If you need it from the text
var n = $("[id^=modal_]").text().match(/'d+/); // 1
或
// If you need it from the ID
var n = $("[id^=modal_]")[0].id.match(/'d+/); // 1
<img id="image_1" src="someimage.jpg" alt="SEO">
你:$('#image_'+ n)
如果你真的只有:
<p id="modal_counter" class="hidden">3</p>
比你能做的要多:
var n = $('#modal_counter').text(); // "3"
$("#image_"+ n) // .fadeIn() or whatever...
只要确保你的页面上没有重复的modal_counter
ID元素。ID必须是唯一的
相关文章:
- 字符串对象类型或基元类型也是如此
- Javascript-如何从字符串/对象引用回调
- JavaScript,字符串/对象操作的例外
- 如何在require中传递字符串/对象
- 字符串对象比较总是返回false
- 对字符串对象调用 .localeCompare 与构造特制的 Intl.Collator 对象之间的性能差异
- 将变量打印到控制台时出现意外字符串:[对象窗口]
- 如何使用javascript在字符串对象中添加原型
- 如何在 JavaScript 中设置/更新字符串对象的值
- jQuery:在 $.each 中从字符串类型转换为字符串对象
- 将属性添加到字符串对象时出现问题
- 从字符串对象中删除第一个出现的字母
- 如何正确地将JQuery函数从表单的输入标记中检索到的这些字符串对象转换为数字
- 转换“;字符串对象“;到对象
- Javascript中字符串对象到字符串原语的转换
- JavaScript符号类型:(非字符串对象键)
- 正在重新定义字符串对象中的长度属性
- 带有字符串对象的jQuery选择器不起作用
- 如何在javascript中将JSON字符串对象打印为下拉列表
- 将日期字符串对象转换为其他格式