如何制作OR选择器而不是AND语句



此语句将查找div #content-company,并在找到它时加载适当的数据。然而,我的问题是:

在这种情况下,我必须使用一个滑块,我不能将其重命名为与div相同的滑块,所以在这种情况中,我有一个额外的名为.sides 的滑块

我通常会这样做:

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

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

有人能解释一下我是怎么得到这个的吗?:

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

提前感谢

您可以检查#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);
});

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

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

您可以简单地使用这个:

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

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

最新更新