如何创建OR选择器而不是AND语句

时间:2015-07-06 11:35:06

标签: javascript jquery html css

此语句将查找div #content-company并在找到时加载相应的数据。不过我的问题是:

在这种情况下,我必须使用一个我无法重命名的滑块与div相同,所以在这个例子中我有一个额外的名为.slides

我通常会这样做:

// JavaScript Document
  $(function(){
    $('.tileSB').click(function(e){
        e.preventDefault();
        var url = $(this).attr('href') + ' #' + $(this).attr('data-target');
        $('#content-company, .slides').load(url);
    });
});

但是,这只是覆盖了与div和slide类相关联的内容,因此您可以同时使用相同的名称,而我不希望这样。

有人可以解释我是如何做到这一点的吗?:

// JavaScript Document
  $(function(){
    $('.tileSB').click(function(e){
        e.preventDefault();
        var url = $(this).attr('href') + ' #' + $(this).attr('data-target');
        $('#content-company OR .slides').load(url);
    });
});

提前致谢

3 个答案:

答案 0 :(得分:5)

您可以检查#content-company元素是否存在。如果不是,您可以使用.slides代替。像这样:

$('.tileSB').click(function(e){
    e.preventDefault();
    var url = $(this).attr('href') + ' #' + $(this).attr('data-target');
    var $target = $('#content-company');
    if (!$target.length)
        $target = $('.slides');
    $target.load(url);
});

答案 1 :(得分:2)

您可以使用? :(三元运算符)。以下代码将使用#content-company,如果它存在,则使用.slides

var $selector = $('#content-company').length ? $('#content-company') : $('.slides');
$selector.load(url);

答案 2 :(得分:1)

你可以简单地使用它:

$("#content-company, .slides").first()

请注意 first 元素是根据HTML顺序确定的。如果找到多个匹配元素,则返回HTML顺序中的第一个。