Javascript “替代方案”;这";变量

Javascript “替代方案”;这";变量,javascript,jquery,Javascript,Jquery,我试图用JavaScript编写一个简单的脚本,只是为了测试。我定义了两个变量,有点不必要,但无论如何都很好,它们为两种不同的场景保存字符串值,如果按钮前的元素在单击按钮时包含粗体文本,则相应的变量将显示在警报对话框中 这是我的代码: $(document).ready(function(){ var Bold="Yes, some of this text is bold!"; var NoBold="No, none of this text is bold."; $("&l

我试图用JavaScript编写一个简单的脚本,只是为了测试。我定义了两个变量,有点不必要,但无论如何都很好,它们为两种不同的场景保存字符串值,如果按钮前的元素在单击按钮时包含粗体文本,则相应的变量将显示在警报对话框中

这是我的代码:

$(document).ready(function(){

  var Bold="Yes, some of this text is bold!";
  var NoBold="No, none of this text is bold.";

  $("<input class="BoldButton" type="button" value="Bold?" id="IntroButton"></input>")
  .insertAfter("#intro");

  $("<input class="BoldButton" type="button" value="Bold?" id="LatestNewsButton"></input>")
  .insertAfter("#news h2");

  $("input.BoldButton").click(function(){
    if () {
      $('').();
    } else {
        $('').();
      {
});

});
$(文档).ready(函数(){
var Bold=“是的,有些文本是粗体的!”;
var NoBold=“否,此文本均不加粗。”;
$("")
.insertAfter(“#简介”);
$("")
.insertAfter(“#新闻h2”);
$(“input.BoldButton”)。单击(函数(){
如果(){
$('').();
}否则{
$('').();
{
});
});
当我意识到我不知道如何检查Button是否在按钮上面的元素时,我正在写我的if if语句。我在考虑使用伪变量,但是我确信这是错误的,因为它不是“这个”之前的元素吗?伪变量?我想我可能混淆了它的用途,很抱歉

无论如何,我真的只需要一种方法来检查按钮前的元素是否包含粗体文本,然后我就可以做其余的事情了。:)

谢谢

最终代码:

$(document).ready(function(){

  var Bold="Yes, some of this text is bold!";
  var NoBold="No, none of this text is bold.";

  $('<input class="BoldButton" type="button" value="Bold?" id="IntroButton">')
  .insertAfter("#intro");

  $('<input class="BoldButton" type="button" value="Bold?" id="LatestNewsButton">')
  .insertAfter("#news p");

 $("input.BoldButton").click(function(){
    if ($(this).prev().is(':has(b, strong)')) {
      alert(Bold);
    } else {
      alert(NoBold);
    }
});

});
$(文档).ready(函数(){
var Bold=“是的,有些文本是粗体的!”;
var NoBold=“否,此文本均不加粗。”;
$('')
.insertAfter(“#简介”);
$('')
.insertAfter(“#新闻页”);
$(“input.BoldButton”)。单击(函数(){
if($(this).prev()是(':has(b,strong)')){
警报(粗体);
}否则{
警惕(诺博尔德);
}
});
});
可以使用
.prev()
$(this.prev()

您想做的事情可以使用

$("input.BoldButton").click(function(){
    if ($(this).prev().find('b').length) {
      // bold text in there!
    } else {
      // no bold text
    }
});
但是请记住,这只会查找使用
增强的文本。一些所见即所得编辑器更喜欢
,因此您必须
.find('strong')
(或者使用
.find('b,strong')
“before”元素可以使用
.prev()
$(this).prev()选择

您想做的事情可以使用

$("input.BoldButton").click(function(){
    if ($(this).prev().find('b').length) {
      // bold text in there!
    } else {
      // no bold text
    }
});

但是,请记住,这只会查找使用
增强的文本。一些所见即所得编辑器更喜欢
,因此您必须
.find('strong')
(或者使用
.find('b,strong')同时进行查找)

您可以使用jquery函数。

您可以使用jquery函数。

如果文本是使用
标记加粗的,您可以使用
.is()
方法和前面元素上的
:has()
选择器来检查它是否有任何后代
标记

像这样:

$("input.BoldButton").click(function(){
    if ($(this).prev().is(':has(b,strong)')) {
      // do something
    } else {
      // do something else
    }
});
.is()
如果与提供的选择器匹配,则返回一个布尔值。
:has()
选择器确定是否有提供选择器的后代



编辑:根据注释中的要求进行更新,以包括对
标记的检查。

如果文本是使用
标记加粗的,您可以使用
.is()
方法和前一个元素上的
:has()
选择器来检查它是否有任何后代
标记

$("input.BoldButton").click(function(){ 
    var myprev = $(this).prev();

    if () { 
      $('').(); 
    } else { 
        $('').(); 
      { 
}); 
像这样:

$("input.BoldButton").click(function(){
    if ($(this).prev().is(':has(b,strong)')) {
      // do something
    } else {
      // do something else
    }
});
.is()
如果与提供的选择器匹配,则返回一个布尔值。
:has()
选择器确定是否有提供选择器的后代


编辑:根据注释中的要求进行编辑,更新后还包括对
标记的检查

$("input.BoldButton").click(function(){ 
    var myprev = $(this).prev();

    if () { 
      $('').(); 
    } else { 
        $('').(); 
      { 
}); 
编辑:我的好奇心征服了我,所以我做了以下几件事:

 var myprev = $(this).prev();
 var mybold = myprev.css('font-weight');
 if (mybold > 400)...
在我看来,这比公认的答案要好,因为它适用于“b”、“strong”以及CSS集值,这些值有400个,如“normal”、“bold”、“bold”等。 (仅在IE8中测试,但似乎有效,如果有人发现其他浏览器的结果不同,我会很好奇)

下面是一个工作示例,展示了这一点的效果:

编辑:我的好奇心征服了我,所以我做了以下几件事:

 var myprev = $(this).prev();
 var mybold = myprev.css('font-weight');
 if (mybold > 400)...
在我看来,这比公认的答案要好,因为它适用于“b”、“strong”以及CSS集值,这些值有400个,如“normal”、“bold”、“bold”等。 (仅在IE8中测试,但似乎有效,如果有人发现其他浏览器的结果不同,我会很好奇)


下面是一个工作示例来说明此操作的效果:

您的意思是希望引用按钮的前一个同级项?美元(“input.BoldButton:before”)或类似的东西怎么样?(我不记得:before是否合法:-我想您希望在$('insertAfter中的'elements'不是双引号。是的,谢谢,我刚刚在我的真实代码中更新了它,意识到。我的缺点是,.click()必须是.live('click'函数()…才能以这种方式在插入的元素上工作,或者使用.delegate()取决于您的版本和标记。您的意思是您想引用按钮的前一个同级项?美元(“input.BoldButton:before”)或类似的东西怎么样?(我不记得:before是否合法:-我想您希望在$('insertAfter中的'elements'不是双引号。是的,谢谢,我刚刚在我的真实代码中更新了它,意识到。我的缺点是,.click()必须是.live('click'函数()…才能以这种方式在插入的元素上工作,或者使用.delegate()取决于您的版本和标记。@BOSS:文本是使用
b
标记还是通过CSS加粗的?是的,它使用的是strong,所以我将使用上面MvanGeest的示例,只是为了掩盖任何不一致性。好的,很好,这与patrick的类似,但它也包含。而“has”组件不是。Is的选择器,因此我们可以使用。has:)@MvanGeest-您的更新版本将无法工作,因为
.has()
将始终返回jQuery对象,因此