Answers:
jQuery方式:
$('#test').attr('id')
在您的示例中:
$(document).ready(function() {
console.log($('#test').attr('id'));
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="test"></div>
或通过DOM:
$('#test').get(0).id;
甚至 :
$('#test')[0].id;
$('#test').get(0)
在JQuery中甚至使用的背后原因甚至$('#test')[0]
是它$('#test')
是一个JQuery选择器,并通过其默认功能返回结果的array()而不是单个元素
jQuery中DOM选择器的替代方法是
$('#test').prop('id')
不同于.attr()
并$('#test').prop('foo')
获取指定的DOM foo
属性,而$('#test').attr('foo')
获取指定的HTML foo
属性,您可以在此处找到有关差异的更多详细信息。
$('#test').id()
。
$('selector').attr('id')
将返回第一个匹配元素的ID。参考。
如果匹配的集合包含多个元素,则可以使用常规的.each
迭代器返回包含每个id的数组:
var retval = []
$('selector').each(function(){
retval.push($(this).attr('id'))
})
return retval
或者,如果您愿意加一点勇气,可以避免使用包装器并使用.map
快捷方式。
return $('.selector').map(function(index,dom){return dom.id})
retval.push($(this).attr('id'))
可以写retval.push(this.id)
return $('.selector').map(function(i, dom){ return $(dom).attr('data-id'); })
上面的答案很好,但是随着jquery的发展..您也可以这样做:
var myId = $("#test").prop("id");
attr()
是在1.0 prop()
中添加的,在1.6中是添加的,所以我假设您的评论prop()
是新方法。
attr
)或可能由脚本修改的(prop
)。如果您实际上id
没有使用客户端脚本修改任何元素的属性,则prop
和attr
相同。
.id
不是有效的jquery函数。您需要使用该.attr()
函数来访问元素拥有的属性。您可以.attr()
通过指定两个参数来更改属性值,也可以通过指定一个来获取值。
好吧,似乎还没有解决方案,并且想提出我自己的解决方案,它是JQuery原型的扩展。我将其放在JQuery库之后加载的Helper文件中,因此检查window.jQuery
if (window.jQuery) {
$.prototype.id = function () {
if (this.length > 1) {
var val = [];
this.each(function (idx, el) {
val.push($(el).id());
});
return val;
} else {
return this.attr('id');
}
}
}
它可能并不完美,但是它可能成为包含在JQuery库中的开始。
返回单个字符串值或字符串值数组。字符串值数组是用于使用多元素选择器的事件。
$('#test')
返回一个jQuery对象,因此您不能简单object.id
地使用它来获取它Id
您需要使用$('#test').attr('id')
,它返回您需要ID
的元素
也可以按照以下步骤进行操作:
$('#test').get(0).id
等于 document.getElementById('test').id
$('#test')[0].id
与.get(0)
可能对其他发现此线程的人有用。以下代码仅在您已经使用jQuery的情况下有效。该函数始终返回一个标识符。如果元素没有标识符,则函数会生成标识符并将其附加到元素。
var generatedIdCounter = 0;
$.fn.id = function() {
var identifier = this.attr('id');
if(!identifier) {
generatedIdCounter++;
identifier = 'isGenerated_' + generatedIdCounter;
this.attr('id', identifier);
}
return identifier;
}
如何使用:
$('.classname').id();
$('#elementId').id();
这是一个古老的问题,但是从2015年开始可能会有效:
$('#test').id;
您还可以进行分配:
$('#test').id = "abc";
只要定义以下JQuery插件:
Object.defineProperty($.fn, 'id', {
get: function () { return this.attr("id"); },
set: function (newValue) { this.attr("id", newValue); }
});
有趣的是,如果element
是DOM元素,则:
element.id === $(element).id; // Is true!
由于id是属性,因此可以使用attr
方法获取它。
这最终将解决您的问题:
假设您在页面上有许多按钮,并且您想根据其ID使用jQuery Ajax(或不使用ajax)更改其中一个按钮。
还可以说您有许多不同类型的按钮(用于表单,用于批准和用于类似目的),并且您希望jQuery只处理“喜欢”按钮。
这是一个有效的代码:jQuery将仅处理.cls-hlpb类的按钮,它将获取被单击的按钮的ID,并将根据来自Ajax的数据对其进行更改。
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"> </script>
<script>
$(document).ready(function(){
$(".clshlpbtn").on('click',function(e){
var id = $(e.target).attr('id');
alert("The id of the button that was clicked: "+id);
$.post("demo_test_post.asp",
{
name: "Donald Duck",
city: "Duckburg"
},
function(data,status){
//parsing the data should come here:
//var obj = jQuery.parseJSON(data);
//$("#"+id).val(obj.name);
//etc.
if (id=="btnhlp-1")
$("#"+id).attr("style","color:red");
$("#"+id).val(data);
});
});
});
</script>
</head>
<body>
<input type="button" class="clshlpbtn" id="btnhlp-1" value="first btn"> </input>
<br />
<input type="button" class="clshlpbtn" id="btnhlp-2" value="second btn"> </input>
<br />
<input type="button" class="clshlpbtn" id="btnhlp-9" value="ninth btn"> </input>
</body>
</html>
代码取自w3schools,并已更改。
<html>
<head>
<link rel="stylesheet"href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<?php
// include Database connection file
include("db_connection.php");
// Design initial table header
$data = '<table class="table table-bordered table-striped">
<tr>
<th>No.</th>
<th>First Name</th>
<th>Last Name</th>
<th>Email Address</th>
<th>Update</th>
<th>Delete</th>
</tr>';
$query = "SELECT * FROM users";
if (!$result = mysqli_query($con, $query)) {
exit(mysqli_error($con));
}
// if query results contains rows then featch those rows
if(mysqli_num_rows($result) > 0)
{
$number = 1;
while($row = mysqli_fetch_assoc($result))
{
$data .= '<tr>
<td>'.$number.'</td>
<td>'.$row['first_name'].'</td>
<td>'.$row['last_name'].'</td>
<td>'.$row['email'].'</td>
<td><button onclick="DeleteUser('.$row['id'].')" class="btn btn-danger">Delete</button>
</td>
</tr>';
$number++;
}
}
else
{
// records now found
$data .= '<tr><td colspan="6">Records not found!</td></tr>';
}
$data .= '</table>';
echo $data;
?>
<script type="text/javascript">
function DeleteUser(id) {
var conf = confirm("Are you sure, do you really want to delete User?");
if (conf == true) {
$.ajax({
url:'deleteUser.php',
method:'POST',
data:{
id:id
},
success:function(data){
alert('delete successfully');
}
}
});
deleteUser.php
<?php
// check request
if(isset($_POST['id']) && isset($_POST['id']) != "")
{
// include Database connection file
include("db_connection.php");
// get user id
$user_id = $_POST['id'];
// delete User
$query = "DELETE FROM users WHERE id = '$user_id'";
if (!$result = mysqli_query($con, $query)) {
exit(mysqli_error($con));
}
}
?>