<div id="test"></div>
<script>
$(document).ready(function() {
alert($('#test').id);
});
</script>
위의 방법이 작동하지 않는 이유는 무엇이며 어떻게해야합니까?
<div id="test"></div>
<script>
$(document).ready(function() {
alert($('#test').id);
});
</script>
위의 방법이 작동하지 않는 이유는 무엇이며 어떻게해야합니까?
답변:
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와 선택과 결과의 () 배열을 반환 기본 기능으로 하나의 요소를하지
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'); })
id
html의 속성입니다 Element
. $("#something")
그러나을 쓸 때 일치하는 DOM 요소를 래핑하는 jQuery 객체를 반환합니다. 첫 번째 일치하는 DOM 요소를 다시 얻으려면get(0)
$("#test").get(0)
이 기본 요소에서 id 또는 다른 기본 DOM 속성 또는 함수를 호출 할 수 있습니다.
$("#test").get(0).id
그것이 id
코드에서 작동하지 않는 이유 입니다.
또는 jQuery의 attr
메소드를 사용 id
하여 첫 번째 일치하는 요소 의 속성 을 얻으려면 다른 답변에서 제안하십시오 .
$("#test").attr("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 라이브러리 다음에로드되는 도우미 파일에 넣었다.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에 따라 jQuery Ajax (또는 ajax 아님)로 버튼 중 하나를 변경하려고한다고 가정 해 보겠습니다.
또한 양식, 승인 및 유사한 목적을 위해 다양한 유형의 버튼이 있으며 jQuery가 "like"버튼 만 처리하기를 원한다고 말할 수 있습니다.
다음은 작동하는 코드입니다. jQuery는 .cls-hlpb 클래스의 버튼 만 처리하고 클릭 한 버튼의 ID를 가져 와서 아약스에서 가져온 데이터에 따라 변경합니다.
<!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));
}
}
?>