jQuery - 在几个元素上运行函数并相应地更改变量

时间:2015-02-08 12:32:15

标签: jquery

我有一个加载来自不同页面的内容的函数。我希望能够在不同的元素上使用相同的函数,并通过“changable”变量加载来自不同url的内容。

我设置了我的变量:

var $banner1 = '/url1',
    $banner2 = '/url2',
    $banner3 = '/url3',
    $someUrl;

我认为某种形式的IF声明能解决我的问题吗? 像这样:

if ($('.banner-01').length > 0) {
        var $someUrl = $banner1;
    }

    if ($('.banner-02').length > 0) {
        var $someUrl = $banner2;
    }

    if ($('.banner-03').length > 0) {
        var $someUrl = $banner3;
    }

然后我运行我的功能

$.fn.loadContent = function() {
        $('.info').each(function()({
            $(this).load($someUrl);
        });
    }

    $('.banner-01').loadContent();
    $('.banner-02').loadContent();
    $('.banner-03').loadContent();

我的预期结果

$('.banner-01 .info').load('/url1');
$('.banner-02 .info').load('/url2');
$('.banner-03 .info').load('/url3');

然而,事实并非如此,我非常困难。

对此的任何帮助都会很棒!

谢谢!

1 个答案:

答案 0 :(得分:1)

如果网址取决于元素的类,则每次调用函数时都必须检查类,而不是仅仅一次。

此外,$('。info')正在定位所有 .info元素,如果您只想定位横幅的子项,则执行$(this).find('。find'):

$.fn.loadContent = function() {
    var whichUrl = '';
    if($(this).hasClass('banner-01')){
        whichUrl = $banner1;
    }else if($(this).hasClass('banner-02')){
        whichUrl = $banner2;
    }else if($(this).hasClass('banner-03')){
        whichUrl = $banner3;
    }
    $(this).find('.info').each(function()({
        $(this).load(whichUrl);
    });
}