我有3个不同的对象,有3个不同的id,我要传递给一个函数。我想检查哪个ID被发送到该函数,然后为每个id发出不同的警告。我有这个代码,但它不起作用,我不确定它是否完全正确或可能这样做。使用$(this),我试图获取我当前正在拖动的元素并将其发送到checkForID函数。
$(document).ready(function() {
$('#option1').draggable();
$('#option2').draggable();
$('#option3').draggable();
checkforID($(this));
});
function checkforID(value)
{
if(value == $('#option1')
alert('You've picked option1');
else if(value == $('#option2')
alert('You've picked option2');
else if(value == $('#option3')
alert('You've picked option3');
}
答案 0 :(得分:2)
您还没有给出您调用checkforID
的位置的任何背景信息,但我会假设this
指的是DOM元素,例如在jQuery事件处理程序中。
如果您传入jQuery对象(看起来像是):
var id = value.attr("id");
...它将为您提供集合中第一个元素的id
(jQuery对象是集合;在引用的代码中,集合将只有一个元素)。
如果你只传入一个元素:
var id = value.id;
重新评论:
我实际上是想传递我正在拖动的元素的id。请问(这个)不起作用吗?
this
是正确的,它是被拖动的元素(除非你想要,否则不需要将它包装在jQuery对象中),前提是代码在任何可拖动的事件处理程序中,例如start
,stop
或drag
。这是一个示例(请注意事件处理程序):Live Copy
<!DOCTYPE html>
<html>
<head>
<link href="http://code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.min.css" rel="stylesheet" type="text/css" />
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script src="http://code.jquery.com/ui/1.10.4/jquery-ui.min.js"></script>
<meta charset=utf-8 />
<title>Drag example</title>
<style>
.draggable {
display: inline-block;
border: 1px solid black;
background-color: #aaa;
width: 50px;
height: 50px;
}
</style>
</head>
<body>
<div id="display"> </div>
<div id="d1" class="draggable"></div>
<div id="d2" class="draggable"></div>
<div id="d3" class="draggable"></div>
<script>
(function() {
var display = $("#display");
$(".draggable").draggable({
start: function(event, ui) {
display.html("You're dragging " + this.id);
},
stop: function(event, ui) {
display.html("You stopped dragging");
}
})
})();
</script>
</body>
</html>
答案 1 :(得分:1)
在您的代码 checkforID($(this))中,$(this)
会将全局window
对象发送到该函数。
请发送适当的对象
答案 2 :(得分:1)
将其更改为:
function checkforID(value)
{
var id = $(value).attr('id');
if(id == '#option1')
alert("You've picked option1");
else if(id == '#option2')
alert("You've picked option2");
else if(id == '#option3')
alert("You've picked option3");
}
答案 3 :(得分:0)
好像您正在寻找 .is() :
function checkforID(value) {
if(value.is('#option1')) alert("You've picked option1");
else if(value.is('#option2')) alert("You've picked option2");
else if(value.is('#option3')) alert("You've picked option3");
}