1

我正在尝试用 javascript 创建自己的工具,这将帮助我将一些 php 函数/文件加载到我的 div 中。

这是我的javascript:

$(document).ready(function () {
    $('.btn').click(function() {        
        $('#someid').testit();
        //   $('#someid').load('somefile');  it works
        return false;
    })   
});

function testit() { 
    $(this).load('somefile');
}

还有我的html:

<div id="someid"></div>
<form>
    <input type="submit" value="test" class="btn" />
</form>

我无法从外部函数加载资源 - 为什么?

4

4 回答 4

2

如果你想调用类似的东西:

$('#someid').testit();

然后,您必须创建一个定义方法的 jQuery 插件testit。该代码看起来像这样:

jQuery.fn.testit = function() {
    return this.load('somefile');
}

然后,只有这样你才能testit()像这样使用 jQuery 方法:

$('#someid').testit();

并且,它将在所需的选择器上运行。

这是一些关于编写这样的插件方法的jQuery 文档。

于 2012-12-03T01:19:30.317 回答
2

您需要执行以下操作:

$.fn.testit = function () {
  return this.load('somefile');
}
于 2012-12-03T01:20:37.477 回答
1

不幸的是,你不能开箱即用地链接这样的函数,你必须将它放入 jquery.fn 原型中才能制作插件。

你可以做的是使用.each()选择器上的函数来调用你的函数。

在您的情况下,如果您要调用$("#someid").each(testit);jquery,则会在找到的每个元素上调用 testit() 函数。

于 2012-12-03T01:23:26.200 回答
1

你可以像这样传递元素......

$(document).ready(function () {
    $('.btn').click(function() {        
        testit($('#someid'));
        return false;
    })   
});

function testit(el) { 
    el.load('somefile');
}

或者创建一个 JQuery 插件作为 jfriend00 提及

于 2012-12-03T01:24:18.260 回答