我正在尝试将自定义属性传递给脚本。如果我这样传递:
$('a.load-local-image').cluetip( {
local:true,
leftOffset: $("#par-1").attr("leftpos")
);
它工作正常。但是,我需要传递当前元素的属性,而不仅仅是par-1。如果我这样试试:
$('a.load-local-image').cluetip( {
local:true,
leftOffset: $(this).attr("leftpos")
);
该函数将参数视为未传递。如果我这样试试:
$('a.load-local-image').cluetip( {
local:true,
leftOffset: function() {return $(this).attr("leftpos");}
);
它传递文字字符串“function(){return $(this).attr(”leftpos“);}”作为参数。
我知道“$(this).attr(”leftpos)“返回正确的值,因为当我在函数调用上方添加这个hack时:
$("a.load-local-image").mouseover(function(){
alert("leftpos=" + $(this).attr("leftpos"));
});
显示“leftpos = 220”。
这是标记:
<div id="par-1">
<a id="load-local" class="load-local-image featurelink" title="" href="" rel="#whatever" leftpos="220" toppos="48">
<img src="images/image.jpg" alt="" class="featureimg"></a>
我只是想将当前元素的leftpos值传递给函数。有人可以帮我解决这个问题。谢谢!
答案 0 :(得分:0)
img
上没有leftpos属性,leftpos属性位于a
。这可能是你问题的一部分。
答案 1 :(得分:0)
不幸的是,this
对象未在参数中被修改。 this
对象将保留调用上下文中的this
对象。
$('#foo').click(function () {
// right here the "this" object refers to $('#foo')
$('a.load-local-image').cluetip({
local: true,
leftOffset: $(this).find("img").attr("leftpos")
// ^- refers to $('#foo') also (same context)
});
});
当你这样做时:
$("a.load-local-image").mouseover(function(){
alert("leftpos=" + $(this).find("img").attr("leftpos"));
// ^- refers to the $('a.load-local-image') that the event was run on
});
this
对象确实包含了您想要的对象,但这是因为当您在事件上运行函数时,this
对象包含触发事件的元素。
编辑:
要实现您尝试使用this
对象实现的目标,您可以这样做:
$('a.load-local-image').cluetip({
local: true,
leftOffset: $('a.load-local-image').attr("leftpos")
});
Or:
$("a.load-local-image").mouseover(function(){
$(this).cluetip({
local: true,
leftOffset: $(this).attr("leftpos")
});
});
编辑#2:
第一次打开cluetip的原因是因为你需要这样做。
// create the cluetip instance:
$("a.load-local-image").cluetip();
// now that the cluetip is created you can call it like this:
$("a.load-local-image").mouseover(function(){
$(this).cluetip({
local: true,
leftOffset: $(this).attr("leftpos")
});
});