我已经创建了如下所示的按钮元素结构
<input
type="button"
class="btn btn-primary"
name="redirect"
value="<mycustomtag data-id=15>"
title="<mycustomtag data-id=14>"
>
现在,每当DOM准备就绪时,我都试图找出自定义元素并尝试用字符串替换。但是我无法替换自定义元素。
我曾经找到的摘录如下
jQuery("mycustomtag").each(function(){
//process here
});
PS在以下情况下可以正常工作:
<div><mycustomtag data-id=20></div>
<h4><mycustomtag data-id=18></h4>
答案 0 :(得分:1)
您的代码
jQuery(“ mycustomtag”)
将尝试找到名为mycustomtag的标签,而我了解的是您正在尝试替换输入属性吗?
尝试关注
//if you want to get values
var value = $("#btnCustom").attr("value");
var title = $("#btnCustom").attr("title");
alert(value);
alert(title);
//if you want to set values
$("#btnCustom").attr("value","replacevalue");
$("#btnCustom").attr("title","replace value 2");
value = $("#btnCustom").attr("value");
title = $("#btnCustom").attr("title");
alert(value);
alert(title);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input
type="button"
class="btn btn-primary"
name="redirect"
value="<mycustomtag data-id=15>"
title="<mycustomtag data-id=14>"
id="btnCustom"
>
答案 1 :(得分:1)
您找不到它们,因为属性值就像字符串一样。
要找到这些元素,您需要通过使用.prop()
选择特定属性来基于主标签选择它们,例如:
$('input').each(function() {
$(this).val();
$(this).prop('title');
});
PS在以下情况下可以正常工作
那是因为在这种情况下,它被视为DOM中的标记元素,因此jQuery可以通过简单的选择器找到它的原因。
$('input').each(function() {
console.log($(this).val());
console.log($(this).prop('title'));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="button" class="btn btn-primary" name="redirect" value="<mycustomtag data-id=15>" title="<mycustomtag data-id=14>">
答案 2 :(得分:0)
在第一个HTML代码中,您要查找的是value或title属性。您第二个是元素名称。
要根据元素的值选择元素,请使用以下语法:
$("input[value='<mycustomtag data-id=15>'")
根据标题选择元素的操作与此类似。
答案 3 :(得分:0)
如果您将自定义标签放在另一个标签的属性中,则该标签将不会在页面中呈现,也就是说,它不会成为文档DOM
树的一部分,它将只是一个{ {1}}在属性中,这就是为什么当您使用string
时您什么都不会得到的原因,但是如果您将其作为jQuery("mycustomtag")
或div
的子元素,它将起作用
因此,在您的特定情况下,您需要使用 .attr()
method 来从此特定属性中获取它,或者使用 .val()
method (如果它在值中)
span
演示:
jQuery("input").attr("title");
jQuery("input").val();
console.log(jQuery("input").attr("title"));
console.log(jQuery("input").val());