将参数传递给js

时间:2013-11-07 20:07:57

标签: javascript jquery parameters

我正在尝试将自定义属性传递给脚本。如果我这样传递:

$('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值传递给函数。有人可以帮我解决这个问题。谢谢!

2 个答案:

答案 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")
    });
});